【发布时间】:2017-01-20 12:38:00
【问题描述】:
在处理 Promise 后处理 Promise、For..Loops 中的 API 调用时,我在很多方面都在苦苦挣扎,我猜我正在开发 Promise 反模式。
这个确切的代码笔说明了我对 Promises 的问题:
http://codepen.io/ghuroo/pen/EZWoGQ?editors=0010
代码示例:
$('#start').on('click', function() {
log('here we go: ');
promise1().then(function(success) {
log(success);
promise2().then(function(success) {
log(success);
promise3().then(function(success) {
log(success);
}).catch(function(error) { log(error); });
}).catch(function(error) { log(error); });
}).catch(function(error) { log(error); });
});
对如何改进我的代码有任何帮助吗? 如您所见,我无法让 for..loop 以正确的顺序登录,它似乎永远无法解决..
另外,关于如何防止瀑布的任何提示? (我只想打印一次错误,而不是每个 promise 调用一个)
编辑:
对于任何寻求解决方案的人,这里是@jaromanda-x 的解决方案:http://codepen.io/ghuroo/pen/pReLZm?editors=0010
【问题讨论】:
-
有更多重复项,采用不同的方法,例如stackoverflow.com/questions/29546898/…。函数到read about:
Promise#each,Promise#map,Promise#mapSeries,Promise#reduce,他们都可以处理这些情况,每个人都擅长某个方面。
标签: javascript for-loop promise anti-patterns waterfall