Структура асинхронных обратных вызовов в javascript: синхронизация асинхронных - PullRequest
0 голосов
/ 21 ноября 2011

Я считаю, что разделение кода между при использовании обратных вызовов усложняет понимание и поддержку моего кода.

Как вы решаете проблему?

Вот несколько решений, которые я нашелс использованием, в качестве примера, асинхронных вызовов веб-службы.Пожалуйста, дайте мне знать, что вы думаете, и и плюсы и минусы, которые происходят с вами.

через замыкания:

sayHelloWithClosures: function ()
{
    //Do something first
    // The following call's signature is: ServiceName(SuccessCallback, FailureCallback);        
    TestBasicWebServices.SL.WebService1.HelloWorld(
    function (result)
    {
        //Do something next
        alert(result);
    },
    function (error)
    {
        //Do Exception
        alert(error._message);
    });
}

через рекурсию:

sayHello: function (result)
{
    if (result == undefined)
    {
        //Do something first
        // The following call's signature is: ServiceName(SuccessCallback, FailureCallback);
        TestBasicWebServices.SL.WebService1.HelloWorld(this.sayHello, this.sayHello);
    }
    else if (typeof (result) == "string")
    {
        //Do something next
        alert(result);
    }
    else
    {
        //Do Exception
        alert(result._message);
    }
}

Ответы [ 2 ]

1 голос
/ 21 ноября 2011

Асинхронные обратные вызовы - это то, с чем вам придется иметь дело в веб-программировании.Я думаю, что это просто случай, когда у вас складывается мнение, что что-то будет в конце концов вызвано.

Я не склонен видеть код в реальной жизни, как твой 2-й пример, поэтому я бы с осторожностью отнесся к этому подходу.Ваш первый подход больше похож на путь, но для меня это выглядит немного старой школой.

Как мне кажется, я привык давать вам ссылки, а не отвечать на ваш вопрос так, как мне нравится.Я отошлю вас к отложенным объектам.Лично я нахожу их, по крайней мере, на начальном этапе, даже менее читабельными, но когда вы их получите, вы не сможете понять, как вы это делали без.

1 голос
/ 21 ноября 2011

С более новыми версиями jquery все меняется в отношении обратных вызовов.

http://addyosmani.com/blog/jquery-1-7s-callbacks-feature-demystified/

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