鉴于我有一个被拒绝的承诺:

var promise = new Promise(function(resolve, reject) {
  reject({error_message: "Foo"});
});


我想转换那个承诺(在这种情况下:提取错误消息):

var new_promise = promise.then(function(response) {
  return response.id;
}, function(error) {
  return error.error_message;
});


当我再次履行诺言时:

new_promise.then(function(id) {
  console.log("Object created: "+id);
}, function(message) {
  console.log("Error: "+message);
});


我将始终在控制台上获得Object created: Foo。转变似乎将被拒绝的承诺变成了已解决的承诺。

有没有一种方法可以转换被拒绝的承诺,以便结果是另一个被拒绝的承诺?

最佳答案

代替:

return error.error_message;


您可以使用:

throw error.error_message;

关于javascript - 在被拒绝的 promise 中转变值(value)观,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26159662/

10-13 06:18