【发布时间】:2015-06-05 04:10:18
【问题描述】:
我正在尝试使用 Promise 实现一个 while 循环。
这里概述的方法似乎有效。 http://blog.victorquinn.com/javascript-promise-while-loop 它使用这样的功能
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);
};
process.nextTick(loop);
return resolver.promise;
};
这似乎使用了反模式和不推荐使用的方法,如 cast 和 defer。
有没有人知道更好或更现代的方法来实现这一点?
谢谢
【问题讨论】:
-
你能用文字解释你真正想要完成的事情吗?请记住,忙等待循环在 Javascript 中是一件可怕的事情。使用某种事件处理程序而不是在紧密循环中重复调用某些东西更有意义。而且,
action()是做什么的?或许展示一个你将如何使用它的例子?
标签: javascript promise bluebird