2016-11-07 12 views
0

使用例は次のとおりです。いくつかの処理を行うイベントハンドラがあります。これは、約束を返す関数を呼び出します。機能が最終的に完了するか失敗するかを保証する必要がありますが、後で追加処理を行う必要はありません。これが動作しているように見えますが、それは悪い習慣のようになります。Bluebirdなしで約束します

function onMyEvent() { 
    return promisifiedFunction() 
    .catch(//log error); 
} 
function someFunction() { 
    emit(‘myevent’); 
} 

が、その後なしでキャッチを持っているために、この悪い習慣はありますか?それはうまくいくようです。

私は、私はどちらか私はファイア・アンド・フォーゲットが、私は、私は約束してエラー

+0

1.「キャッチ」と「リターン」の両方を使用していないのは、完全にうまく、悪いことではありません。実際、必要がないときに「then」や「return」を追加すると、コードが混乱する可能性があるため、悪い習慣とみなすことができます。 – nem035

答えて

0

をキャッチしたい場合はそれが必要だと思う、.thenまたは.catchを使用するとの約束を実行する可能性があるのでreturnを必要とは思いませんでした。または、少なくともそれを実行し始める。 A .catch関数は、Promiseの別のパス、つまり例外が発生したときとはまったく異なります。

.thenなしで約束を実行すると、約束が黙って解決され、引き続き.catch機能を入力することができます。

.catchなしで約束を実行すると、すべての.then機能がまだ機能しており、例外がスローされます。

あなたがやっていることはOKです。あなたが結果を気にしない、あるいは約束を縛らないなら、あなたはreturn文も必要ないかもしれません。

+1

* ".thenまたは.catchを使用すると約束が実行されます。" *は正しくありません。約束を作成することはそれを実行することです。 'then'または' catch'を呼び出すことは、約束の決議のためにコールバックを添付するだけです – nem035

関連する問題