0
var deferred = $.Deferred();
function doSomething() {
for (i = 1; i < 10; i++) {
context.executeQueryAsync(function() //success function
{
if (check_i_val(i)) {
context.executeQueryAsync(Function.createDelegate(this, this.success), Function.createDelegate(this, this.failed));
}
},
function (sender, args) //failure function
{
console.log(args.get_message());
});
}
}
function success() {
console.log(i);
}
function failed() {
//display error
}
function check_i_val(val) {
if (val = 1 || val = 3 || val = 5 || val = 7) {
return true;
}
}
Я хочу, чтобы это производило 1,3,5,7 в этом порядке - фактическая функция, которую я использую, более сложна, чем это, и имеет время загрузки, поэтому результаты являются неожиданными. Как я могу использовать отложенные (как обещание jquery), чтобы мой код запускался последовательно?Асинхронное согласование в петле
Вы понимаете, что ваша функция 'check_i_val' неверна, правильно? –
Кроме того, нет ничего, что связано с обещаниями, кроме вашего пустого, отложенного в вашем коде. Может быть, вы хотите начать с чего-то меньшего? –
ok исправил функцию, я просто создал ее в качестве примера, в последнее время программировал слишком много языков. Я знаю, что это сложная проблема, но это проблема, с которой я столкнулся. Мне нужно убедиться, что цикл повторяется только после того, как он получил обещание от внутренней функции async. – John