2016-10-22 55 views
0

我剛開始使用藍鳥,它真的很棒!但我想知道如果我可以做以下情況:藍鳥 - 混合each()和all()?

我有一個承諾的數組,如果一切都很好,他們都返回解析(對象)。但我必須檢查我的對象是否有一些財產,以確保一切都很好,並且我必須在對我的承諾的呼叫之後做到這一點。

而且我還需要知道每次通話何時完成。我曾經想過每次調用each()都會增加的int,當我的int達到promisesArray.length - 1時,那麼就完成了,但我已經將Bluebird看作一個名爲all()的方法,當所有東西都被調用時完成。

它可以混合它們嗎?就像在我的數組上做一個.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,它只顯示一次。我已經使我的諾言意圖失敗,並且不顯示任何錯誤。 – Devz

+0

也許我應該解釋更多..我使用摩卡,這是用於單元測試。我也使用should.js,所以當我說我正在檢查我的對象的屬性時,我使用object.should.have.property('property')。但我會嘗試另一種方式。 – Devz