Я создал рекурсивную функцию обещания:Javascript рекурсивного обещание застряли в бесконечном цикле
this.testFunction = Bluebird.method(function (instanceID) {
var object = this;
return object.canSsh(instanceID)
.then(function (sshable) {
if (sshable) {
return object.onSshable(instanceID)
.then(function() {
return Bluebird.resolve();
});
}
else {
return Bluebird.delay((SSH_POLLING_INTERVAL * 1000))
.then(function() {
return object.testFunction(instanceID);
});
}
})
.catch(function (err) {
return Bluebird.reject(err);
});
});
Однако, даже когда sshable
становится истинной, эта функция продолжает рекурсивно происходит и в бесконечном цикле. Я ожидал, что как только я вернусь из блока sshable
, он должен существовать.
@Adam Я должен удалить все то блок? – user1692342
Звучит так, как будто 'object.onSshable()' будет вызывать 'testFunction()'. В противном случае ваша функция больше не должна быть вызвана (но обратите внимание, что обещания из предыдущих вызовов все еще решены) – Bergi
Я думаю, что это может быть разрешено сейчас. Функция, вызывающая тестовую функцию, не обрабатывала ее как обещание. Может ли это создать проблему? – user1692342