Javascript 转换拒绝承诺中的值
鉴于我的承诺被拒绝:Javascript 转换拒绝承诺中的值,javascript,promise,Javascript,Promise,鉴于我的承诺被拒绝: var promise = new Promise(function(resolve, reject) { reject({error_message: "Foo"}); }); var promise = new Promise(function(resolve, reject) { reject({error_message: "Foo"}); }); 我想转换这个承诺(在这种情况下:提取错误消息): 当我再次履行承诺时: new_promise.then(
var promise = new Promise(function(resolve, reject) {
reject({error_message: "Foo"});
});
var promise = new Promise(function(resolve, reject) {
reject({error_message: "Foo"});
});
我想转换这个承诺(在这种情况下:提取错误消息):
当我再次履行承诺时:
new_promise.then(function(id) {
console.log("Object created: "+id);
}, function(message) {
console.log("Error: "+message);
});
我总是在控制台上创建对象:Foo
。这种转变似乎将被拒绝的承诺变成了一个已解决的承诺
有没有办法将被拒绝的承诺转换为另一个被拒绝的承诺?而不是:
return error.error_message;
您可以使用:
throw error.error_message;
鉴于我的承诺被拒绝:
var promise = new Promise(function(resolve, reject) {
reject({error_message: "Foo"});
});
var promise = new Promise(function(resolve, reject) {
reject({error_message: "Foo"});
});
注意这应该是var promise=promise.reject({error_message:“Foo”})代码>-此处无需涉及复杂的构造函数
我想改变这个承诺
具体来说,您希望映射承诺的错误状态。不幸的是,在标准承诺中没有这样的方法(比如maperor
)。您在代码中做了什么
实际上正在为错误设置处理程序,而不是转换。您“捕获”错误,然后返回新结果-另请参阅
有没有办法改变一个被拒绝的承诺,使其结果成为另一个被拒绝的承诺
是的,你需要得到一个拒绝作为你的处理程序的结果。你可以用任何一种方法
.then(…, function(error) {
return Promise.reject(error.error_message);
})
或者
(但是,请注意,不能拒绝带有实际Error
对象的承诺)
.then(…, function(error) {
throw error.error_message;
})