Promise.all并没有等待所有承诺得到解决

Anu*_*tav 1 javascript asynchronous promise angular

Promise.all并没有等待所有的承诺得到解决.在下面的代码中,我试图复制一个场景,根据一些服务(两个服务)响应我将设置数组,然后当所有服务调用完成后,进程.所有这些都会给出受限制的价值.但这不起作用.

let errorPromises = [];
    setTimeout(() => {
      errorPromises.push(new Promise((resolve, reject) => resolve(1000)));
    }, 2000);
    setTimeout(() => {
      errorPromises.push(new Promise((resolve, reject) => resolve(3000)));
    }, 1000);

    let promise = Promise.all(errorPromises);
    promise.then(data => {
      console.log("All done", data);
    });
Run Code Online (Sandbox Code Playgroud)

它应该打印"全部完成[1000,3000]"但它打印"全部完成[]"

请帮忙.

smn*_*brv 6

发生这种情况是因为您在超时后创建了promises.你需要在Promise中包装超时

let errorPromises = [];

errorPromises.push(new Promise((resolve, reject) => {
  setTimeout(() => resolve(1000), 2000);
}));

// or a one-liner
// errorPromises.push(new Promise(resolve => setTimeout(() => resolve(1000), 2000)));

/// repeat with all others...

let promise = Promise.all(errorPromises);
promise.then(data => {
  console.log("All done", data);
});
Run Code Online (Sandbox Code Playgroud)