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

javascript中异步回调的结构:同步异步回调,javascript,web-services,asynchronous,Javascript,Web Services,Asynchronous,我发现使用回调时代码之间的分离使我的代码更难理解和维护 你如何处理这个问题 以下是我提出的两个解决方案,以异步web服务调用为例。请让我知道你的想法,以及你想到的优点或缺点 通过关闭: sayHelloWithClosures: function () { //Do something first // The following call's signature is: ServiceName(SuccessCallback, FailureCallback);

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

你如何处理这个问题

以下是我提出的两个解决方案,以异步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,回调的每一个方面都在发生变化


异步回调是web编程中必须处理的事情。我认为这只是一种心态,某种东西最终会被称为

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

因为我似乎习惯于给你链接,而不是像我喜欢的那样完整地回答你的问题。我会给你介绍不同的物体。我个人认为,至少从一开始,它们更不容易阅读,但当你得到它们时,你将无法理解没有它们你是如何做到的


谢谢!这真的很酷。不幸的是,我不认为它将如何帮助解决上述可读性问题。。。