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]"但它打印"全部完成[]"
请帮忙.
发生这种情况是因为您在超时后创建了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)
归档时间: |
|
查看次数: |
391 次 |
最近记录: |