0
我正在使用http請求庫got。使用這個軟件包,http連接是異步的,快速且容易輸出。 「got
」cha是got
是一個promisified包,這給我帶來了幾個挑戰。一個是我不知道如何傳遞給got
的引用。如何使用單個回調異步排隊和執行多個promise?
我需要做的是使用got
與文件流一起下載幾個網址的頁面內容。完成所有這些流,我想繼續在代碼中。
在這個例子中,我沒有創建一個promise數組,而是得到一個響應對象數組。
const getFile = (fileUrl) => {
return new Promise((resolve) => {
got.stream(fileUrl).pipe(fs.createWriteStream(path.basename(fileUrl)))
.on('finish',() => {
successMessage('downloaded ' + fileUrl + '!');
resolve();
});
});
};
// create an array of these got promises
let promises = []
for (let file of body.files) {
promises.push(getFile(file));
}
的getFile
幫手之所以存在,是來包裝got
的承諾,以便執行所有got
S的後,我可以用一個promise.all
電話:
// after all got's have executed
promises.all(promises).then(() => {
console.log('all promises resolved');
}
尋求幫助瞭解如何更改第一個片段,以便promises.all
的行爲如預期。
它是'Promise.all(承諾)',但除此之外,你的代碼應該工作。什麼是錯誤? – Bergi
我想你剛剛發現了Bergi的bug。我會在有人來之前發佈這個答案,並竊取您賺取的優質互聯網點! – Acey
@Bergi你應該作爲一個完整的答覆,它爲我工作,你值得這個正確的答案。謝謝! –