【问题标题】:Execute function on completion of another, use ajaxComplete()?在另一个完成时执行函数,使用 ajaxComplete()?
【发布时间】:2009-03-21 20:08:26
【问题描述】:

两个函数需要在 Javascript 中执行,一个应该在另一个完成后启动。

第一个使用getJSON 填充一个数组,然后第二个将对其进行操作。

但是,getJSON 是异步的,它不会暂停执行顺序以使程序正常工作,以便数组在第二个函数执行之前完成加载。

一旦通过getJSON 完成数据加载,如何使用Jquery 的ajaxComplete()getJSON 回调来运行第二个函数。

谢谢。


代码如下:

function fetch_ids(user) {
  var url = 'http://test.com/ids/' + escape(user) + '.json?callback=?';
  // populate array ids[] with JSON data --uid[] array declared globally
  $.getJSON(url, function(data) {
    for (var i = 0; i < data.length; i++) ids[i] = data[i];
  });
  // test array and run alert
  for (i = 0; i < uid.length; i++) {
    for (j = 0; j < ids.length; j++) {
      if (uid[i] == ids[j]) {
        alert('matched: ' + uid[i]);
      }
    }
  }
  // finish test
}

【问题讨论】:

    标签: javascript jquery json ajax


    【解决方案1】:

    这不行吗?

    $.getJSON(url, params, function (jsonData){
      // populate array
      // call 2nd function.
    });
    

    最坏的情况,如果你已经在别处定义了你的 2 个函数:

    $.getJSON(url, params, function (jsonData){
      firstFunction(jsonData);
      secondFunction(jsonData);
    });
    

    【讨论】:

    • 不,不幸的是,这不起作用。这是关于在 $.getJSON 完成执行后触发第二个函数。
    • 我不明白...触发第二次调用作为 getJSON 回调的最后一行有什么问题?为什么需要等待回调完成?
    • 如果您需要填充数组,请在第一次调用或 getJSON 回调中进行;之后,您无需等待它完成;你可以在那里调用第二个函数。如果不是,请更新您的问题,说明为什么会这样。
    • 确实,这就是您问题的答案。
    • 示例代码如上。测试部分不会像大家想的那样执行。也许只有我一个人,到目前为止还没有成功。
    【解决方案2】:

    查看这个类似的帖子... How to initiate another jQuery .ajax call based on the result from an initial .ajax call?

    诀窍是将第二次调用放在第一次调用的成功函数中。

    【讨论】:

    • 嗯,这和我上面说的差不多……但我还是不明白他为什么不喜欢我的回答:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多