5

我正在尝试在 jetpack 插件中使用 Firefox 的Downloads.jsm库(它是 Firefox 23 中的新功能)。

var {Cu} = require("chrome"); //works fine
const {Downloads} = Cu.import("resource://gre/modules/Downloads.jsm"); //works fine

但是执行这些函数中的任何一个都没有效果:

download = Downloads.createDownload({source: "http://cdn.sstatic.net", target: "/tmp/kaki.html"}); //download is an object but has no function "start"
Downloads.simpleDownload("http://cdn.sstatic.net","/tmp/kaki.html");

文档: https ://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download

你有什么想法,如何使用这些功能?我在网上没有找到任何例子

4

1 回答 1

6

API 函数返回一个promise,而不是实际的 Download 对象。

简而言之,以下应该有效:

const {Downloads} = Cu.import("resource://gre/modules/Downloads.jsm", {});
var downloadPromise = Downloads.createDownload({source: "http://cdn.sstatic.net", target: "/tmp/kaki.html"})
downloadPromise.then(function success(d) {
  d.start();
});

阅读promises,让处理它们变得更有趣,还有Task.jsm

API 最近确实发生了很大变化。记录的是当前的 Aurora-25 或更高版本的 API。“旧” API 记录在源代码中。

此gist中提供了一个更完整的支持 Firefox <25 的示例。

于 2013-08-12T20:14:17.183 回答