我正在使用http请求库got 。使用这个包,http 连接是异步的、快速的并且易于输入。 “got
”cha 就是 got
这是一个 promise 的方案,这给我带来了一些挑战。一是我不知道如何传递对 got
的引用.
我需要做的是使用got
与文件流一起下载多个 url 的页面内容。完成所有这些流后,我想继续编写代码。
在这个例子中,我得到的是一组响应对象,而不是做出一系列 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
promise 在履行所有 got
后s,我可以使用 promise.all
调用:
// after all got's have executed
promises.all(promises).then(() => {
console.log('all promises resolved');
}
寻求帮助以了解如何更改第一个代码片段,以便 promises.all
行为如预期。
最佳答案
Promise 聚合函数称为 Promise.all()
,而不是 promises.all()
。
关于javascript - 如何使用单个回调异步排队和执行多个 Promise?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36700240/