2016-10-22 1 views
0

私はBluebirdを使い始めたばかりで、本当に素晴らしいです!しかし、私は次のシナリオを行うことができるかどうか疑問に思っていた:Bluebird - each()とall()をミックスしていますか?

私は約束の配列を持っていて、それぞれがすべてが良い場合に解決(オブジェクト)を返します。私のオブジェクトには、すべてが良いことを確認するためのプロパティがいくつかあるかどうかをチェックする必要があります。私は約束を守ってからやる必要があります。

また、すべての呼び出しがいつ行われるかを知る必要があります。私は、each()が呼び出され、intがpromisesArray.length - 1に達するたびに増分するintを考えましたが、すべて終わったときに呼び出されるall()というメソッドとしてBluebirdを見ました。完了しました。

それらを混ぜることは可能ですか?すべてのオブジェクトがそのプロパティを持っているかどうかをチェックするために配列の.each()を実行し、すべてがうまくいったことを知るために.all()を実行します。

+0

私はあなたが私たちに私たちにのためのコードを表示する必要があると思いますあなたが本当に話していること、そして最高の解決策が何であるかを知ってください。 – jfriend00

答えて

1

あなたはすべての約束を得るためにPromise.allを使用して、すべての約束は、あなたが成功のために必要なプロパティが含まれている場合Promise.resolve()またはPromise.reject()を返すことができます。

Promise.all(promisesArray).then(function(results) { 
    results.forEach(function(result) { 
     // make the needed check for each result - for example: object.should.have.property('property') 
    }); 
}); 
+0

素晴らしい、ありがとう男! – Devz

+0

まあ私の悪い、それは実際にうまく動作しません。私はresults.every()コールバックでconsole.logを使用しましたが、それは一度だけ表示されます。私は私の約束のうちの1つを失敗させ、何のエラーも表示しない。 – Devz

+0

多分私はもっと説明しているはずです...私はモカを使用しています、これは単体テスト用です。私もshould.jsを使用しています。だから私は私のオブジェクトのプロパティをチェックしていると言ったとき、私はobject.should.have.property( 'property')を使っています。しかし、私は別の方法を試してみます。 – Devz

関連する問題