首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在之前的所有ajax调用完成后触发ajax调用

在之前的所有ajax调用完成后触发ajax调用
EN

Stack Overflow用户
提问于 2015-06-15 11:45:16
回答 2查看 349关注 0票数 0

假设我有如下函数:

代码语言:javascript
复制
function A(){
    func B();
    ajax call last;
}

func B(){
   if some condition1
       func C();
   if some condition2
       func D();
   if some condition3
       func E();
}

func C(){
     some ajax cal 1
}

func D(){
     ajax call 2
}

func E(){
     ajax call 3
}

我的问题是,只有当之前所有的ajax调用都完成了.i.e ajax调用1、2、3时,才应该触发ajax调用的最后一个。

EN

回答 2

Stack Overflow用户

发布于 2015-06-15 11:48:56

如果你使用的是jQuery,那么你就可以访问基于promise的各种调用。对$.ajax的调用将返回一个promise,该promise可用于延迟后续调用。请参阅jQuery when调用的文档(docs here)。

使用when,您可以在$.ajax调用完成后执行函数。您可以对$.ajax的单个这样的调用或多个调用使用相同的技术。

我不确定根据你的问题,你想如何链接调用,但这里有一个基于你的代码的尝试(未经测试,但这应该会让你走上正确的道路):

代码语言:javascript
复制
func B()
{
    var callC = null;
    var callD = null;
    var callE = null;

    if (condition1)
        callC = $.ajax("/call/1");

    if (condition2)
        callD =  $.ajax("/call/2");

    if (condition3)
        callE =  $.ajax("/call/3");

    $.when(callC, callD, callE).then($.ajax("/call/last"));
}

.then将在3个AJAX调用完成后执行,无论它们是成功还是失败。如果你只想在所有调用都返回成功的情况下继续,也可以看看.done

票数 2
EN

Stack Overflow用户

发布于 2015-06-15 11:54:53

尝试使用return.then()

代码语言:javascript
复制
function A() {
    return B();
}

function B() {
   if (some_condition1) {
       return C();
   };
   if (some_condition2) {
       return D();
   };
   if (some_condition3) {
       return E();
   };
}

function C() {
     // some ajax call 1
     return $.ajax()
}

function D() {
     // ajax call 2
     return $.ajax()
}

function E() {
     // ajax call 3
     return $.ajax()
}

A().then(function() {
  // ajax call last;
  return $.ajax()
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30837046

复制
相关文章

相似问题

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