Вот пример кода:
function DoStuff()
{
var v1 = $('#htmlControl1').val();
var v2 = $('#htmlControl2').val();
myFunction1(v1, v2, (myFunction2(v1, v2, myFunction3)));
}
function myFunction1(v1, v2, completeFunc1)
{
//ajax code here, using jQuery, that calls
//'completeFunc1' in the 'complete:' block
}
function myFunction2(v1, v2, completeFunc2)
{
//ajax code here, using jQuery, that calls
//'completeFunc2' in the 'complete:' block
}
function myFunction3()
{
//performs some other tasks
}
Намерение состоит в том, что будет вызван myFunction1
, будет выполнен вызов ajax и, по завершении, вызовет myFunction2
, который, в свою очередь, сделает то же самое, вызвав myFunction3
при его завершении.
Фактический результат заключается в том, что myFunction2
вызывается первым, выполняет myFunction3
по завершении и возвращает null
. myFunction1
затем вызывается с null
в качестве аргумента для полной функции, что не приводит к выполнению каких-либо действий по ее завершению (у меня там проверка на нуль, так что это не проблема).
Итак, как мне сделать то, что я собираюсь здесь? Как правильно передать myFunction2(v1, v2, myFunction3)
с заданными переменными в myFunction1
в качестве аргумента?