javascript - 然后使用数组链接

标签 javascript node.js

<分区>

我正在寻找一种将多个 Promise 链接在一起的方法,类似于 Promise.all,但我希望每个 Promise 都等待最后一个。我确定这可能已经得到解答,但我想我不知道该用 google 搜索什么。

function output(msg) {
 return new Promise((resolve,reject) => {
  console.log(msg);
  resolve();
 });
}

output('1st').then(() => {
 output('2nd').then(() => {
  output('3rd').then(() => {
   console.log('done')
  });
 });
});

// I want to be able to build from an array of length n
const msgs = ['1st','2nd','3rd'];

for(let i = 0; i < msgs.length;i++){
 // Not sure what to do here
 output(msgs[i]).then(() => {
  output(msgs[i+1]);
 });
}

最佳答案

您可以在数组上使用像 forEach 这样的循环,并在 async 函数 中使用 await:

function output(msg) {
 return new Promise((resolve,reject) => {
  console.log(msg);
  resolve();
 });
}
const msgs = ['1st','2nd','3rd'];
function ArrPromiseAll(arr) {
  arr.forEach(async function(i) {
    await output(i);
  });
  console.log("Done All.");
}
ArrPromiseAll(msgs);

输出:

1st
2nd
3rd
Done All.

关于javascript - 然后使用数组链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53088626/

相关文章:

node.js - onlyoffice nextcloud “document could not be saved” nodeJS-postData错误

javascript - 不知道停止这个无限循环的语法

javascript - 在 HTML/CSS/JS 中制作修复缩放时间线

Eclipse 无法识别express/node

angularjs - "Port 4200 is already in use"。杀死与 4200 相关的所有进程没有用。

javascript - 刷新动态路由时,Nuxt 应用程序返回 404(Tomcat 服务器)

node.js - 在 Heroku 上部署没有 http 服务器的 nodeJS 应用程序

javascript - 将 HTML/JS 变量传递给 Python

javascript - wordpress 的本地主机 : correct way to link reference css/js files?

javascript - 向流图添加更新工具提示