有没有办法知道哪个承诺在'Promise.join`中失败?

时间:2016-11-21 12:06:18

标签: node.js bluebird

在下面的代码中(使用Bluebird库),如果出现错误,是否有办法确定哪些承诺失败?

Promise.join(User.getByName(username), User.getByKey(key), (user1, user2) => {
  //do operations
}).catch((error) => {
  //How to know which failed?
});

这两个承诺都会在拒绝时产生一般错误消息。

1 个答案:

答案 0 :(得分:1)

你不能。如果你真的需要,你必须为每个人单独实现一个错误处理程序。

Promise.join(User.getByName(username)
    .catch(err => {throw new Error('error in getByName');}), 
  User.getByKey(key)
    .catch(err => {throw new Error('error in getByKey');}),
 (user1, user2) => {
  //do operations
}).catch((error) => {
  // error.message should now display origin of error
});