javascript - 使用 Firefox 的 Downloads.jsm 在观察文件的同时一次下载一个文件?

标签 javascript firefox firefox-addon download

Mozilla 给出了 some sample code using Firefox's Downloads.jsm ,我正在尝试使用 Downloads.jsm 以串行方式一次下载多个文件。

但是当我尝试像这样使用它时:

Task.spawn(function () {

  let list = yield Downloads.getList(Downloads.ALL);

  let view = {
    onDownloadAdded: download => console.log("Added", download),
    onDownloadChanged: download => console.log("Changed", download),
    onDownloadRemoved: download => console.log("Removed", download),
  };

  yield list.addView(view);
  try {
    let download = yield Downloads.createDownload({
      source: "http://www.mozilla.org/",
      target: OS.Path.join(OS.Constants.Path.tmpDir, "example-download.html"),
    });
    list.add(download);
    download.start();
  } finally {
    yield list.removeView(view);

    moveOnToNextDownload();
  }

}).then(null, Components.utils.reportError);

当我使用 moveOnToNextDownload() 继续进行下一个下载时,会启动多个下载并并行下载文件。

我应该如何使用 Downloads.jsm 以串行方式一次下载一个文件?

最佳答案

download.start 是一个异步方法,返回 Promise ,因此在第一次下载开始后立即调用 moveOnToNextDownload

相反,您可以执行download.start().then(moveOnToNextDownload)

关于javascript - 使用 Firefox 的 Downloads.jsm 在观察文件的同时一次下载一个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20754580/

相关文章:

javascript - 使用 JavaScript 或扩展获取 Firefox 页面信息

javascript - responseXML 剪辑发送的 XML 数据

javascript - 当重新加载包含 mysql 数据的表的页面时,它应该转到表的特定部分

eclipse - 使用 Firefox 的 PDT/Xdebug

css - 当在没有宽度的 float div 中 float 子项时,Chrome 和 Firefox 的渲染不同。

javascript - 从一个简单的网站访问 Firefox 插件的功能

javascript - 这是WebSocket的正常使用还是低级的使用?

javascript - 为什么我的 Firefox 扩展不使用从 Firefox 4 网页中提取的 jQuery 1.4.2 对象添加事件处理程序

javascript - 使用 JavaScript 创建 IFRAME 的最佳做法是什么?

firefox-addon - Mozilla "Jetpack"附加组件 : Anchor Panel to Widget