1

私は次のようなものを持っています:

doHTTPRequest()
.then(handleSuccess, checkNotFound)
.then(uploadSomething)
.fail()
.done()

checkNotFound に入ったときに、404 を取得したかどうかを確認する必要があります。そうであれば、実際の失敗ではなく、uploadSomething を続行したいのですが、Q チェーンによって失敗するように指示されます。他の失敗 (例: 他のステータス コード) では、fail() に入りたいと思います。

4

2 に答える 2

3

の署名はthenpromise.then(onFulfilled, onRejected)新しいプロミスを返します。返された promise は、whateveronFulfilledまたはonRejectedreturn または throw によって解決されます。つまり、エラーを処理し、onRejected満たす promise を返す場合、それは結果に渡され、failハンドラをスキップします。コード内:

function request(url) {
    // returns a promise
}

function retryForeverLoop(url) {
    return request(url).then(null, function (error) {
        return retryForeverLoop(url);
    });
   // note that retrying forever might not work out well
}

retryForeverLoop(url)
.then(uploadSomething)
.done()
于 2013-10-19T01:07:50.740 に答える