【发布时间】:2014-05-23 12:34:45
【问题描述】:
我正在尝试执行以下操作:
我有一个函数looper(),它根据条件调用自己。
我希望其中的某些部分只执行一次,而其他一些部分在每次调用时执行。
我不知道这是否是最好的方法,但我想不出别的办法,而且这不起作用。
var stopper = 3;
looper().then(function() {
console.log('This should happen only once');
});
function looper(d) {
if (!d)
var d = when.defer(); // recycled promise
console.log('This should happen EVERY time looper() is called');
next();
console.log('This shouldn’t happen if looper() is called again by next().');
function next() {
if (--stopper <= 0) {
d.resolve();
} else {
looper(d)
// if only next() could return a `return`
// so that looper() returns/exits based on this if condition ...
// return return
}
}
return d.promise;
}
有什么方法可以实现吗?
【问题讨论】:
-
您可以向它传递一个参数,表明它是在内部调用的,类似于您对
d所做的操作。
标签: javascript loops recursion return promise