【问题标题】:$.when produces different result when $.ajax are inline vs $.ajax are returned by a function当 $.ajax 内联与 ​​$.ajax 由函数返回时,$.when 会产生不同的结果
【发布时间】:2019-05-05 15:48:02
【问题描述】:

使用 jquery 1.12 我需要等待两个 AJAX 调用的结果,然后再继续。当我使用$.when 时,我不明白为什么当我直接传递$.ajax 和从函数调用返回$.ajax 时,我没有得到相同的结果。

这行得通。在done 部分,func1 是一个数组,func1[0] 是返回的数据:

$.when($.ajax({
  url: url1,
  type: 'GET',
  dataType: 'json',
  xhrFields: {
    withCredentials: true
  },
  headers: {
    Accept: "application/json; charset=utf-8"
  },
  success: function (data){
    debugger;
  } 
}), $.ajax(...)
).done(function(func1, func2) {
  debugger;
})

这不是。在done 部分func1undefined

var myfunc = function() {
  return $.ajax({
    url: url1,
    type: 'GET',
    dataType: 'json',
    xhrFields: {
      withCredentials: true  
    },
    headers: {
      Accept: "application/json; charset=utf-8"
    },
    success: function (data) {
      debugger;
    }   
  });
}

$.when(myfunc(), $.ajax(...)).done(function(func1, func2) {
  debugger;
})

在第二种情况下,我只是将第一个 ajax 调用包装到一个函数中。

已编辑

问题已解决。我写了

return 
 $.ajax({
  url: url1,...

而不是

return $.ajax({
  url: url1,...

在第一种情况下,解析器将指令解释为两条指令:返回 undefined 然后返回 $.ajax。 $.ajax 指令永远不会执行,因为我们已经退出了函数。

【问题讨论】:

    标签: jquery ajax .when


    【解决方案1】:

    如果func1 未定义,也许myfunc() 没有返回任何东西?如果您不将myfunc 作为函数名而不是函数调用传递,例如$.when(myfunc, $.ajax())...?

    【讨论】:

    • 你是对的。我写了 "return$.ajax(...)" 它什么也没返回。
    猜你喜欢
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    相关资源
    最近更新 更多