2016-04-01 14 views
0

と仮定します。どのように約束JavaScriptのチェーンやエラー

function f() { 
    return p1() 
    .then(function(p1res) { 
     console.log('p1 ok'); 
     return Promise.resolve(p1res); 
    }, function(err) { 
     console.log('p1 err '+err); 
     return Promise.reject(err); 

    }).then(... proceed 

は文

return Promise.resolve(p1res); 

return Promise.reject(err); 

が必要ですか?

答えて

1

ステートメントreturn Promise.resolve(p1res);return Promise.reject(err);は必要ですか?

あなたがそれらのハンドラからチェーンの追加thenハンドラに計画するので、(「通過」)保存約束の値とステータスをする必要が場合は、[はい、このか何かと同等の必要とされています。しかし、あなたはそれをやろうとしている場合でも:

  1. 代わりのreturn Promise.resolve(p1res);それは簡単で、ちょうど言うreturn p1res;に相当します。

  2. 代わりのreturn Promise.reject(err);「理由」errでエラーパス上の約束を続けるために、ちょうどthrow err;を言うために簡単かつ相当します。

あなたの目標は、単に状況をログに記録するハンドラを持っている場合は、あなたがする必要はありませんし、それはに行くために、あなたが必要となりますので、おそらく、そこからチェーン、後続のハンドラにしたくありませんダウンストリームハンドラの利益のためにステータス報告ハンドラが値を返すか、またはエラーを再スローすることを確実にするために余分な手間がかかる。代わりにステータスレポートハンドラを別の「支店」に置くことができ、返品や返品について心配する必要はありません。

+0

優秀、thx! – kofifus

関連する問題