Я наткнулся на этот скрипт из поиска Google по адресу jQuery. Deferred и Promise для последовательного выполнения синхронных и асинхронных функций .
Это может решить мою проблему с выполнением скрипта в последовательном порядке. Но проблема с функцией then() заключается в том, что я не могу узнать, сколько раз я могу вызывать эту функцию. Я могу вызвать функцию a() 3 раза, в следующий раз я могу вызвать ее 20 раз и т. д. Так что с then() это не сработает. Функция then() не допускает стек массива. Итак, что вы, люди, делаете, чтобы заставить эту концепцию работать?
fucntion a(counter)
{
$deferred = $.Deferred();
//Run some scripts here...
alert(counter);
$deferred.resolve();
return $deferred;
}
function Test()
{
var d = $.Deferred(),
p=d.promise();
p.then(a(0)).then(a(1)).then(a(2));
d.resolve();
return d;
}
Test().done(function(){ alert('done'); }).fail(function() { alert('fail'); });
$deferred
, возвращенноеa(N)
, в.then()
. Вместо этого вам нужно будет передать функцию обратного вызова, например..then(a)
. - person Bergi   schedule 03.09.2014Test()
? Что в этом плохого, что происходит, когда вы делаете то, чего не ожидали? Что вы подразумеваете под разрешить стек массива? - person Bergi   schedule 03.09.2014a(0); a(1); a(2);
одновременно, что заставляет асинхронные процессы выполняться одновременно. - person Bergi   schedule 03.09.2014