Javascript 使用数组链接THEN

Javascript 使用数组链接THEN,javascript,node.js,Javascript,Node.js,我正在寻找一种方法,将多个承诺链接在一起,类似于承诺。除了我希望每个人都等待最后一个。我相信这可能已经得到了回答,但我不知道该用谷歌搜索什么 function output(msg) { return new Promise((resolve,reject) => { console.log(msg); resolve(); }); } output('1st').then(() => { output('2nd').then(() => { output(

我正在寻找一种方法,将多个承诺链接在一起,类似于承诺。除了我希望每个人都等待最后一个。我相信这可能已经得到了回答,但我不知道该用谷歌搜索什么

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]);
 });
}
函数输出(msg){
返回新承诺((解决、拒绝)=>{
控制台日志(msg);
解决();
});
}
输出('1st')。然后(()=>{
输出('2nd')。然后(()=>{
输出('3rd')。然后(()=>{
console.log('done')
});
});
});
//我希望能够从长度为n的数组中进行构建
常数msgs=['1st','2nd','3rd'];
for(设i=0;i{
输出(msgs[i+1]);
});
}

您可以像这样将它们链接起来,以避免像地狱一样筑巢:

output('a')
    .then(a_out => output('b'))
    .then(b_out => output('c'))
    .then(c_out => console.log('all done'));
对于一系列的
承诺[]

let loopback = (arr, i=0) => {
    return arr[i].then(() => {
        if (i < arr.length - 1)
            return loopback(arr, i+1);
    });
};

let last = loopback(load);
let loopback=(arr,i=0)=>{
返回arr[i],然后(()=>{
如果(i
您可以在数组上使用类似循环的
forEach
,并在
异步函数中使用
wait

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.
相关的: