javascript - 如何使用单个回调异步排队和执行多个 Promise?

标签 javascript node.js http asynchronous promise

我正在使用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/

相关文章:

javascript - 如何使用 Javascript 从 XML 获取属性值?

javascript - 如何在 NodeJS (Bluebird) 中通过 Promise 链保存数据

javascript - 用于 Node 邮件程序的客户端 ID、客户端 key 和刷新 token 的 XOAuth2 gmail

http - 为什么SSL代理和HTTP代理通信之间的管道比TCP连接简单?

rest - 是否仍然有 HTTP 301 而不是 HTTP 308 的用例来指示资源已移动(特别是在 ReST 服务器中)?

javascript - 我不断收到此错误,XML 解析错误 : syntax error but still the website runs fine

javascript - 什么是 DOM js 内存容量?

java - 当客户端使用 readTimeout 关闭连接时服务器会发生什么

javascript - 如何在 jQuery 中找到特定表单中的提交按钮

javascript - 如何从 GraphQL 突变访问变量值?