0

我正在使用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;

无论如何要更优雅地做到这一点?

4

1 回答 1

1

Q Promises(以及任何 Promises/A+ 实现)的美妙之处在于,您可以throw

return Q.when(otherPromise)
    .then(function (result) { /* handle result */ })
    .fail(function (err) { throw new Error('A real error!'); });

您可以在 Q 自述文件的“传播”部分找到此信息。

于 2013-05-24T03:58:51.637 回答