У меня есть эта функция:Как сделать цикл «для» с асинхронным состоянием в Javascript?
waitForFreeAccnt.prototype.isMemberFree = function() {
var self = this;
self.api.getMemberInfo(function() {
var accType = self.api.connect.accountType;
console.log(accType);
if (accType === 'FREE') {
console.log('it is free');
return true;
} else {
console.log('it is not free');
return false;
}
});
};
Я хотел бы подождать, пока счета бесплатно до 10 секунд с чем-то вроде этого:
var test = function() {
for (var start = 1; start < 10; start++) {
var result = self.isMemberFree();
console.log(result);
if (result) {
break;
} else {
self.api.pause(1000);
console.log('waiting');
}
}
};
Но это не работает, потому что self.api.getMemberInfo
является асинхронный звонок. Это очень расстраивает Javascript. Любой другой язык было бы так просто сделать. Как заставить цикл for ждать self.isMemberFree()
, чтобы закончить выполнение перед продолжением цикла?
Также следует отметить, что это не в исполнении браузера, поэтому мне все равно, что висит.
Does 'self.api.connect' вернуть какой-то отложенного объекта или обещания? Вы должны дождаться разрешения объекта перед тем, как перейти к следующему элементу. – Terry
@nnnnnn, я хочу, чтобы он звонил 10 раз и ждал 1 секунду между вызовами. Мне все равно, как долго проходит звонок. Предположим, что за одну минуту каждый звонок. Таким образом, он мог подождать 10 минут и 10 секунд, и со мной все будет в порядке. – Prostak
@Terry, мой плохой, на самом деле getMemberInfo возвращает какой-то объект. – Prostak