Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 转换拒绝承诺中的值_Javascript_Promise - Fatal编程技术网

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;
})