またはq.js
の約束によって返される前に、カスタム エラー クラスでエラー (文字列) をラップできるようなものを使用して、遅延ラッパーを作成しようとしています。これは私が現在行っていることです:then()
fail()
var getDeferred = function() {
var deferred = q.defer();
var reject = deferred.reject;
deferred.reject = function(error) {
if (!(error instanceof MyErrorClass))
error = new MyErrorClass(error)
return reject.apply(deferred, arguments);
}
return deferred;
}
したがって、アイデアは、ユーザーが次のようなことをするということです
var deferred = getDeferred();
deferred.promise.fail(function(err) {
// err should now be instance of MyErrorClass and NOT a string
})
deferred.reject('A string error')
に渡された文字列ではなくMyErrorClass
、ハンドラーに入ることが期待されます。fail()
deferred.reject
上記のコードは機能しますが、理想的とは言えません。しかし、これを行うためのより良い方法はありますか?