首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用jQuery promises链接三个异步调用?

如何使用jQuery promises链接三个异步调用?
EN

Stack Overflow用户
提问于 2013-04-16 08:44:15
回答 7查看 102.1K关注 0票数 72

我有三个HTTP调用需要以同步方式进行,如何将数据从一个调用传递到另一个调用?

代码语言:javascript
复制
function first()
{
   ajax()
}

function second()
{
   ajax()
}

function third()
{
   ajax()
}


function main()
{
    first().then(second).then(third)
}

我尝试对这两个函数使用延迟,并提出了部分解决方案。我可以将它扩展为三个函数吗?

代码语言:javascript
复制
function first() {
    var deferred = $.Deferred();
     $.ajax({

             "success": function (resp)
             {

                 deferred.resolve(resp);
             },

         });
    return deferred.promise();
}

function second(foo) {
     $.ajax({
            "success": function (resp)
            {
            },
            "error": function (resp)
            {
            }
        });
}


first().then(function(foo){second(foo)})
EN

回答 7

Stack Overflow用户

发布于 2014-01-28 07:21:01

在jQuery中使用promises时,实际上有一种简单得多的方法。请看以下内容:

代码语言:javascript
复制
$.when(
    $.ajax("/first/call"),
    $.ajax("/second/call"),
    $.ajax("/third/call")
    )
    .done(function(first_call, second_call, third_call){
        //do something
    })
    .fail(function(){
        //handle errors
    });

只需将所有调用链接到$.when(...)调用并处理.done(...)中的返回值打电话。

如果您愿意,这里有一个演练:http://collaboradev.com/2014/01/27/understanding-javascript-promises-in-jquery/

票数 40
EN

Stack Overflow用户

发布于 2017-04-03 04:56:58

回复太晚了,但我猜答案中缺少一些链接的直接代码。使用jquery中的promise支持,链接事件非常简单。我使用以下链接:

代码语言:javascript
复制
$.ajax()
.then(function(){
   return $.ajax() //second ajax call
})
.then(function(){
   return $.ajax() //third ajax call
})
.done(function(resp){
   //handle final response here
 })

它很简单,没有复杂的for循环或多个嵌套回调。

票数 35
EN

Stack Overflow用户

发布于 2013-04-16 08:47:16

这比这简单得多。

$.ajax已经返回了一个promise (延迟对象),所以您可以简单地编写

代码语言:javascript
复制
function first() {
    return $.ajax(...);
}
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16026942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档