Bluebird Promise ドキュメントでは、 .then(success, failed)失敗)はアンチパターンとしてラベル付けされます。この背後にある理由は何ですか?
推奨される .then(success).catch(fail) チェーンとは異なり、.then(success, failed) を使用すると、制御フローの問題が発生します。
.then(success, failed) の使用:
try { results = some_call(); } catch (e) { logger.log(e); break then; } else logger.log(results);
使用中.then(success).catch(fail):
try { var results = some_call(); logger.log(results); } catch (e) { logger.log(e); }
アンチパターンは、エラー処理を単一の最終キャッチ ハンドラーに制限するため、推奨されません。ただし、次のようなシナリオでは役立ちます。
コールバックの繰り返しを回避するには、次のようにします。次のパターンを使用します:
some_promise_call() .catch(function(e) { return e; // it's OK, we'll just log it }) .done(function(res) { logger.log(res); });
または、この目的で .finally() メソッドを利用できます。
以上が`.then(success, failed)` が Promise 処理のアンチパターンとみなされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。