Javascript Promises.all()跟踪双重任务完成情况

Javascript Promises.all()跟踪双重任务完成情况,javascript,promise,Javascript,Promise,我使用Promise.all(tasks)来跟踪我的任务的总体完成情况,而不是按照特定的顺序执行(这是我的主要目标)。我还想跟踪单个任务的完成情况,如何做到这一点?没有任何东西可以阻止您附加单个处理程序以及一起等待它们: let tasks = …; for ([t, i] of tasks.entries()) t.then(res => { console.log("task "+i+" completed with", res); }, err =&g

我使用
Promise.all(tasks)
来跟踪我的任务的总体完成情况,而不是按照特定的顺序执行(这是我的主要目标)。我还想跟踪单个任务的完成情况,如何做到这一点?

没有任何东西可以阻止您附加单个处理程序以及一起等待它们:

let tasks = …;
for ([t, i] of tasks.entries())
    t.then(res => {
        console.log("task "+i+" completed with", res);
    }, err => {
        console.log("task "+i+" failed because", err);
    });
Promise.all(tasks).then(all => {
    console.log("all tasks completed");
}, err => {
    console.log("something failed");
});

没有任何东西可以阻止您将单个处理程序连接到一起:

let tasks = …;
for ([t, i] of tasks.entries())
    t.then(res => {
        console.log("task "+i+" completed with", res);
    }, err => {
        console.log("task "+i+" failed because", err);
    });
Promise.all(tasks).then(all => {
    console.log("all tasks completed");
}, err => {
    console.log("something failed");
});

尝试使用
Array.prototype.map()
将承诺传递给
Promise.all()

var-promises=[Promise.resolve(“a”)、Promise.resolve(“b”);
Promise.all(promises.map)(函数(p,索引){
返回p.then(函数(数据){
console.log(“inside.map()”,数据,“index”,index)
返回数据
},函数(err){
控制台日志(err);
返回错误
})
}))
.然后(功能(完成){
console.log(“在.map()之后的所有承诺”,完成)
},函数(err){
console.log(“err”,err)

})
尝试使用
Array.prototype.map()
将承诺传递给
Promise.all()

var-promises=[Promise.resolve(“a”)、Promise.resolve(“b”);
Promise.all(promises.map)(函数(p,索引){
返回p.then(函数(数据){
console.log(“inside.map()”,数据,“index”,index)
返回数据
},函数(err){
控制台日志(err);
返回错误
})
}))
.然后(功能(完成){
console.log(“在.map()之后的所有承诺”,完成)
},函数(err){
console.log(“err”,err)

})
你是什么意思,个人?完成的任务之一?或者确切的任务已完成?跟踪-并对信息做什么(准确地说是哪些信息)?只需在每个承诺上安装单个
然后
处理程序?能否显示您的代码?使用
[/*承诺数组*/].map()
作为
Promise.all()
的参数?在
.map()
回调中“跟踪”每个
承诺
?你是什么意思,个人?完成的任务之一?或者确切的任务已完成?跟踪-并对信息做什么(准确地说是哪些信息)?只需在每个承诺上安装单个
然后
处理程序?能否显示您的代码?使用
[/*承诺数组*/].map()
作为
Promise.all()
的参数?在
.map()
回调中“跟踪”每个
承诺
?是否()不强制顺序执行?是的,它将强制
控制台.log
在相应承诺解决后运行。它不会在承诺之间强加任何秩序。只需在您的
任务中尝试它
!那么()是否会强制顺序执行?是的,它会强制
console.log
s在相应的承诺解决后运行。它不会在承诺之间强加任何秩序。只需在您的
任务中尝试它
!这几乎不会影响到
console.log(“err”,err)
early-reject,因为您正在处理所有问题errors@Bergi可以描述“几乎从未点击过console.log(“err”,err)”?将不会到达
被拒绝的
。然后
跟随
.all()
?是的,当任何
承诺被拒绝时,它将不会到达。@Bergi有趣的是,刚刚尝试将第二个承诺转换为
。拒绝(“b”)
“所有承诺在.map()之后[“a”,“b”]”
记录在
。然后
完成
?希望调用
console.log(“err”,err)
?有什么见解吗?@Bergi几乎不会点击
console.log(“err”,err)
early-reject,因为您正在处理所有问题errors@Bergi可以描述“几乎从未点击过console.log(“err”,err)”?将不会到达
被拒绝的
。然后
跟随
.all()
?是的,当任何
承诺被拒绝时,它将不会到达。@Bergi有趣的是,刚刚尝试将第二个承诺转换为
。拒绝(“b”)
“所有承诺在.map()之后[“a”,“b”]”
记录在
。然后
完成
?希望调用
console.log(“err”,err)
?有什么见解吗?@Bergi