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/