所以我有一个保存Ember Data模型的基本函数,并在失败时运行常见的回调代码然后将承诺返回给调用者,因此调用者可以自己链接其他回调,但不知何故,链式回调来自调用者未按预期执行,成功代码在失败和成功时执行,而失败代码从未执行
以下是常用功能的代码:
// this function returns the model.save() promise to allow chaining of promises on the caller scope.
function baseCall() {
return model.save().then(function () {
//success
}, function (reason) {
//failure
if (reason.errors) {
model.set('errors', reason.errors);
}
});
}
这是来电者代码:
baseCall().then(function(post) {
console.log('super.success');//runs on failure AND success
}, function() {
console.log('super.failure');//never runs
});
答案 0 :(得分:0)
出于同样的原因,以下代码始终警告“Hello”;
try {
model.save(); // throws Error
} catch (e) {
if (reason.errors) {
model.set('errors', reason.errors);
}
}
console.log("Hello");
promise错误处理程序,就像同步catch
“处理”错误一样。如果您不想将错误标记为已处理 - 请重新抛出它:
throw reason; // always throw proper `Error`s