2013-12-24 2 views
2

모질라는 some sample code using Firefox's Downloads.jsm을주었습니다. 나는 한 번에 하나씩 여러 파일을 다운로드하기 위해 Downloads.jsm을 사용하려고합니다.Firefox의 Downloads.jsm을 사용하여 파일을 한 번에 하나씩 다운로드하면서 다운로드 하시겠습니까?

하지만이처럼 사용하려고 할 때 : 나는 moveOnToNextDownload()을 사용하여 다음 다운로드로 이동

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); 

가 여러 다운로드가 시작하고 파일을 병렬로 다운로드됩니다.

한 번에 하나씩 파일을 다운로드하려면 어떻게 Downloads.jsm을 사용해야합니까?

답변

2

download.startPromise를 반환하는 비동기 방식이기 때문에 moveOnToNextDownload 귀하의 첫 번째 다운로드 을 시작 직후라고합니다.

대신 download.start().then(moveOnToNextDownload)을 사용할 수 있습니다.

관련 문제