如何使用Promise 鏈建立同步循環
問題:
問題:問題:
<code class="javascript">var Promise = require('bluebird'); var promiseWhile = function(condition, action) { var resolver = Promise.defer(); var loop = function() { if (!condition()) return resolver.resolve(); return Promise.cast(action()) .then(loop) .catch(resolver.reject); }; loop(); return resolver.promise; };</code>
解決方案 1(簡化的 PromiseWhile 函數):
這個簡化版本的 PromiseWhile 函數需要將回呼傳遞為條件和操作參數的參數。<code class="javascript">function fetchUserDetails(arr) { return arr.reduce(function(promise, email) { return promise.then(function() { return db.getUser(email).done(function(res) { logger.log(res); }); }); }, Promise.resolve()); }</code>
另一種方法是縮減電子郵件地址數組並進行相應的異步調用每個:
此方法建立一個平坦的.then() 鏈並保持反應的原始順序。<code class="javascript">fetchUserDetails(arrayOfEmailAddys).then(function() { console.log('all done'); });</code>
以上是以下是一些適合所提供文章的問題式標題: * 如何使用 Promise 鏈實現同步執行:簡化 `promiseWhile` 和陣列縮減技術指南 * S的詳細內容。更多資訊請關注PHP中文網其他相關文章!