正确编写承诺循环的方式。

正确编写承诺循环的方式。,第1张

正确编写承诺循环的方式。

我不认为这可以保证调用logger.log(res)的顺序;

实际上,确实如此。该语句在

resolve
调用之前执行。

有什么建议?

很多。最重要的是您使用手动创建承诺反模式 仅做

promiseWhile(…, function() {    return db.getUser(email)  .then(function(res) {       logger.log(res);       count++;  });})…

第二,该

while
功能可以简化很多:

var promiseWhile = Promise.method(function(condition, action) {    if (!condition()) return;    return action().then(promiseWhile.bind(null, condition, action));});

第三,我不会使用

while
循环(带有闭包变量),而是使用
for
循环:

var promiseFor = Promise.method(function(condition, action, value) {    if (!condition(value)) return value;    return action(value).then(promiseFor.bind(null, condition, action));});promiseFor(function(count) {    return count < 10;}, function(count) {    return db.getUser(email)  .then(function(res) {       logger.log(res);       return ++count;  });}, 0).then(console.log.bind(console, 'all done'));


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5566229.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存