2016-05-26 74 views
1

我正在嘗試所有人都如此興奮的承諾。他們應該減少代碼的複雜性,這是我還沒有注意到的一個功能。使用藍鳥承諾做N次

在我的情況下,我有一個函數返回Promise。該函數通過ADB在Android設備上調用按鍵向上或向下事件。我這樣稱呼它:

press(B_KEY, 3000, client, device) 
    .then(function(result) {console.log("Key press done.");}); 

我想執行這個動作(也稱press)函數)的順序幾次。我可以手動做到這一點:

press(B_KEY, 3000, client, device) 
    .then(function(result) {return press(B_KEY, 3000, client, device);}) 
    .then(function(result) {return press(B_KEY, 3000, client, device);}) 
    .then(function(result) {return press(B_KEY, 3000, client, device);}) 
    // ad nauseam 

我想有類似for循環的東西。我試圖想到僞代碼來向你展示,但我擁有的任何想法都非常難看。

如何使用Promises中的所有功能進行循環?

+2

可能的複製藍鳥承諾](http://stackoverflow.com/questions/29375100/while-loop-using-bluebird-promises) – mdickin

+0

@mdickin我讀過這個問題和其他幾個。只是FYI,而lop和for循環是不同的東西。 –

+0

'for'循環只是while循環的子類。 – mdickin

回答

0

爲了達到你的目的,你可以使用mapSeries()對一個空數組迭代n次:

return Promise.mapSeries(new Array(4), function() { 
     return press(B_KEY, 3000, client, device); 
    }); 

有關mapSeries更多信息()參見[While循環使用的reference