Javascript 阵列的承诺未按预期工作

Javascript 阵列的承诺未按预期工作,javascript,node.js,Javascript,Node.js,我使用Promise.all函数调用两个函数,其中我传递一个奇数和一个偶数。根据数字,我决定成败 const time11=(t) =>{ return new Promise((resolve,reject) =>{ if(t%2==0){ resolve(t) }else{ reject(t) } }) } // Promise.all Promise.all([time11(101), time11(1210)]) .then(

我使用Promise.all函数调用两个函数,其中我传递一个奇数和一个偶数。根据数字,我决定成败

const time11=(t) =>{
  return new Promise((resolve,reject) =>{
   if(t%2==0){
     resolve(t)
   }else{
     reject(t)
   }
  })
}

// Promise.all
Promise.all([time11(101), time11(1210)])
 .then(result => console.log('success',result))
 .catch(error=> console.log('error',error))
我希望输出是成功1210错误101,但实际输出是错误101

allsolited()方法返回一个承诺,该承诺在所有给定承诺都已解析或拒绝后解析,其中包含一个对象数组,每个对象描述每个承诺的结果

const time11=(t)=>{
返回新承诺((解决、拒绝)=>{
如果(t%2==0){
解决(t)
}否则{
拒绝(t)
}
})
}
允诺
.全部结算([时间11(101),时间11(1210)])

.then(result=>console.log(result))
承诺。全部
要么全有,要么全无。一旦数组中的所有承诺都解决,它就会解决,或者一旦其中一个承诺被拒绝,它就会拒绝。换句话说,它要么用一个包含所有解析值的数组进行解析,要么用一个错误进行拒绝

有些库有一个名为Promise.when的东西,据我所知,它会等待数组中的所有承诺被解析或拒绝,但我不熟悉它,而且它不在ES6中

在这种情况下,您可以
解决
所有情况,但必须在
然后
链中管理不同的响应

const time11=(t) =>{
  return new Promise((resolve,reject) =>{
   if(t%2==0){
     resolve(true) // Changed to boolean
   }else{
     resolve(false)  // Resolved and Boolean
   }
  })
}

// Promise.all
Promise.all([time11(101), time11(1210)])
 .then(isEven => console.log('isEven',isEven))

[time11(101),time11(1210)].forEach(p=>p.then(result=>console.log('success',result)).catch(error=>console.log('error',error))
Promise.all
仅当所有传递的承诺都已解决时才会解决,它会拒绝您看到的一切。请查看Promise.allSettled()
或Hi kemicofa的可能重复项,感谢您的建议,但遗憾的是Promise.allSettled函数在node js中不可用。