【问题标题】:jQuery queue multiple JSON calls and callback [duplicate]jQuery排队多个JSON调用和回调[重复]
【发布时间】:2012-07-29 07:13:57
【问题描述】:

可能重复:
Sequencing ajax requests

我得到了一系列艺术家的名字。 对于每个艺术家的名字,我都会调用一个 ajax json 到一个网络服务来获取这个艺术家的歌曲。

我现在的问题是:我如何确定所有 ajax 请求都已完成(成功或失败)。

我查看了DeferredsAjaxManager,但我无法实现它以使其运行(如果它是正确的方法...)

我的代码如下所示:

$.each(tf.suggestedArtists, function(index, artist){
  var url = tf.enBaseUrl + "song/search?api_key=" + tf.apiKey + "&format=json&artist=" + artist.name + "&bucket=id:spotify-WW&bucket=tracks"

  $.ajax({
    type: "GET",
    url: url,
    dataType: 'json',
  }).done(function( data ) {
    //...do some more stuff

由于 JSON 和跨域问题,无法异步执行这些调用。

【问题讨论】:

标签: jquery ajax json queue


【解决方案1】:

如果你想确保所有的ajax请求都完成了,你可以使用if语句和$.active,。

if($.active > 0){ 
  //There's an ajax request pending.
}else{
  //No ajax requests pending.
}

【讨论】:

  • 不错,不知道这个。它适用于 jQuery Ajax 调用。下一个问题是,在我的每个 ajax 调用中,我都从另一个库中获得了另一个异步调用。但我认为这是另一个问题......
  • @AndreasGeibert 是的。 $.active 没有记录,但是它暴露在 jQuery API 中,所以很容易找到和使用。你从另一个库得到另一个异步调用?为什么不省去自己的麻烦,只使用 1 个库。几乎没有任何理由使用诸如 mootools + jquery,或 scriptaculous + jquery,或 mootools + scriptaculous 之类的东西……坚持 1,并使用它,这是一个更安全的选择。
  • 不,抱歉,我写错了:在我的 ajax 调用中,我通过 spotify 库调用了 spotify api。没有其他 javascript 框架/库。并且那个 spotify 调用也是异步的......
  • @Andreas Geibert 这将检测任何 ajax 调用。如果是 getJSON...ajax....post... 没关系,它们都只是 jQuery ajax 的伪包装器。将使用$.active 检测任何正在运行的 XHR 请求。
猜你喜欢
  • 2013-02-17
  • 2023-04-11
  • 1970-01-01
  • 2011-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-14
相关资源
最近更新 更多