在javascript中异步回调的结构:同步异步

我发现使用回调之间的代码分离会让我的代码更难理解和维护。

你如何处理这个问题?

以下是我提出的几个解决方案,它们使用异步Web服务调用。 请让我知道你的想法,以及发生在你身上的优点或缺点。

通过关闭:

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);
    }
}

随着jQuery的更新版本,每一件事情都在改变回调。

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


异步回调是你在网络编程中必须处理的事情。 我认为它只是一个进入思维的案例,最终会被调用。

我不喜欢在第二个例子中看到现实生活中的代码,所以我会对这种方法保持警惕。 你的第一个方法更像是要走的路,但它对我来说看起来有点古老。

因为我似乎处于给你链接而不是像我喜欢的那样完全回答你的问题的习惯。 我会把你推荐给对象。 我个人发现他们至少在初始阶段更不可读,但是当你得到他们时,你将无法理解你没有。

什么是延迟对象?

链接地址: http://www.djcxy.com/p/55307.html

上一篇: Structure of async callbacks in javascript: Synching the Asynch

下一篇: Javascript method chaining