我正在使用Q.js作承诺。
我想知道在Q-promise失败时是否可以快速格式化/更改错误消息。
考虑一个人为的例子:
return Q.when(//$.ajaxpromise for instance).then(function(result){
//handle result
}).fail(function(err){
//somehow change err (returned from $.ajax) to something
//sensible (say the statuscode + responseText) and
//push it up the callstack
});
当然,我可以做以下事情,但感觉有点麻烦:
var deferred = Q.defer();
Q.when( //$.ajaxpromise for instance).then(function(result){
//handle result
deferred.resolve();
}).fail(function(err){
deferred.reject(new Error(err.responseText));
});
return deferred.promise;
无论如何要更优雅地做到这一点?
答案 0 :(得分:1)
Q promises(以及任何Promises / A +实现)的精彩之处在于你只能throw
:
return Q.when(otherPromise)
.then(function (result) { /* handle result */ })
.fail(function (err) { throw new Error('A real error!'); });
中找到此信息