【发布时间】:2014-07-19 13:09:10
【问题描述】:
我在链接 .then() 请求时遇到问题。执行以下代码时:
var prom = new Promise(function(resolve, reject) {
//let's always fail
reject(Error("buuuu!"));
});
var thenable =
prom.then(
function(done) {
console.log("First handler: Done!: Argument: ", done);
return "First then: DONE";
},
function(fail) {
console.error("First handler: Fail!. Argument: ", fail);
return "First then: FAIL";
}
).then(
function(done) {
console.info("Second handler: Done!. Argument: ", done);
},
function(fail) {
console.error("Second handler: Fail!. Argument: ", fail);
}
);
这会在控制台中打印以下内容:
First handler: Fail!. Argument: Error {stack: (...), message: "buuuu!"}
Second handler: Done!. Argument: First then: FAIL
为什么第二个 then() 调用的是 done 处理程序而不是 fail 处理程序?
这是 Chrome 的错误吗? (请注意,我只对 Google Chrome 的行为感兴趣)
我是否需要从 .then 处理程序返回预先解决/拒绝的承诺?
【问题讨论】:
标签: javascript google-chrome promise