Попаднах на този скрипт от търсенето с Google в jQuery Отложено и обещание за последователно изпълнение на синхронни и асинхронни функции .
Това може да реши моя проблем при изпълнението на скрипта в последователен ред. Но проблемът, който имам с функцията 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