jQuery: ajaxSubmit как синхронный вызов - PullRequest
0 голосов
/ 29 декабря 2010

У меня есть центральная функция JavaScript:

function storeProperties() {
    $("form#systemProperties").ajaxSubmit({
        data: $("form#systemProperties").serialize(),
        type: 'post',
        url: '?url=super',
        success: function(response) {
            /* output & co */
       }
    });
}

Этот метод иногда вызывается сам по себе, иногда другим методом, например:

function sendMessage() {
    storeProperties(); /* it's a precondition */

    /* let's do some magic */
}

Проблема в том, что storeProperties() завершается асинхронно, пока ajaxSubmit все еще обрабатывается.К сожалению, магия не должна начинаться до того, как storeProperties() закончится.

Как я могу либо синхронизировать вызов storeProperties(), либо вызвать вторую функцию, как только она будет сделана?Есть более одной функции, которая вызывает storeProperties().

Большое спасибо!

1 Ответ

1 голос
/ 29 декабря 2010

Поместите свою функциональность Let's do magic в отдельную функцию, а затем передайте ее в качестве параметра storeProperties.т.е.

    function storeProperties(successFunc)
{     
    $("form#systemProperties").ajaxSubmit
    (
        {         
            data: $("form#systemProperties").serialize(),         
            type: 'post',         
            url: '?url=super',         
            success: function(response)
            {             
                /* output & co */        
                if(successFunc && (typeof successFunc == 'function'))
                {
                    successFunc(response);
                }
                                  else
                                  {
                                   //do the default stuff
                                  }
            }     
        }
    ); 
} 

function sendMessage() 
{     
    storeProperties(function(data){doTheMagic(data);}); 
} 

function doTheMagic(data)
{
    /* let's do some magic */ 
}

Редактировать: обновлены свойства storeProperties для получения функции в качестве параметра

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...