5

jetpack addin에서 Downloads.jsm Firefox의 lib (Firefox 23의 새로운 기능)를 사용하려고합니다. Firefox Addon Downloads.jsm

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

어떻게 이러한 기능을 사용하는 어떤 생각을 가지고 있습니까? 웹에서 예제를 찾지 못했습니다.

답변

6

API 함수는 실제 Download 개체가 아닌 promise을 반환합니다.

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에 최대 읽기 및 API가 최근에 꽤 변화 않았다 또한 Task.jsm

, 그들을 훨씬 더 재미를 처리하기 위해; 한마디로

, 다음과 같은 작업을해야합니다 문서화 된 것은 현재 Aurora-25 또는 이후 버전의 API입니다. "이전"API는 source 내에 문서화되어 있습니다.

< 25에 대한보다 완벽한 예제는 gist에서 사용할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 이제 저는 그 해결책에 더 가깝습니다. 나는 세이버 : "복사"매개 변수가 설정되어야한다는 것을 발견했다. 이 경우 성공 함수가 호출되고'd'는 실제로'Download' 객체입니다. 그러나'd.start()'는 여전히 효과가 없습니다. – balping

+0

내가 준 코드는 chrome-privileged 스크래치 패드 (OSX Nightly 어쨌든)에서 축 어적으로 작동합니다. 즉, /tmp/kaki.html이 올바른 내용으로 생성됩니다. 도움이 더 필요하면 질문에 세부 사항을 추가하고 조금 자세히 설명하십시오. – nmaier

+0

[Add-on builder] (https://builder.addons.mozilla.org)에서 예제를 공유해 주실 수 있습니까? 귀하의 코드를 정확하게 복사했는데 작동하지 않습니다. 나는 우분투 12.04를 사용하고 있으며 무엇이 잘못되었는지를 정말로 모른다. 나는 매우 감사 할 것입니다 – balping