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 promise (およびすべての Promises/A+ 実装) の素晴らしい点は、次のことができることですthrow

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

この情報は、Q readme の「Propagation」セクションにあります。

于 2013-05-24T03:58:51.637 に答える