I'm trying to create a while loop using promises and I'm getting a memory leak.
An example of the pattern I'm using is
var promiseFor = BPromise.method(function(delay, condition, action, value) {
if (!condition(value)) {
return value;
} else {
return action(value).delay(delay).then(promiseFor.bind(null, delay, condition, action));
}
});
var condition = function(value) {
return value != 100000;
};
var action = function(value) {
return BPromise.delay(10)
.then(function() {
console.log('value:' + value);
return value + 1;
});
};
var delay = 0;
promiseFor(delay, condition, action, 0)
.then(function() {
console.log('done');
})
.catch(function(e) {
console.error(e.message);
});
When I run this the memory used by node keeps increasing.
I'm using bluebird 2.9.10.
I've tried another approach to avoid the recursive nature of the approach above but it also has a leak.
Any suggestions on how to correctly implement a promise while loop ?
I'm trying to create a while loop using promises and I'm getting a memory leak.
An example of the pattern I'm using is
When I run this the memory used by node keeps increasing.
I'm using bluebird 2.9.10.
I've tried another approach to avoid the recursive nature of the approach above but it also has a leak.
Any suggestions on how to correctly implement a promise while loop ?