【问题标题】:how to get array value in ajax success method? [duplicate]如何在ajax成功方法中获取数组值? [复制]
【发布时间】:2020-09-16 22:53:16
【问题描述】:

我想在 ajax 调用所有 URL 后重定向到最快的 URL,但是当我提醒该值时,我得到 undefined

var servers = ["url1", "url2", "url3"];
for (var i = 0; i < servers.length; i++) {
  $.ajax({
    type: "GET",
    url: servers[i],
    data: {},
    cache: false,
    success: function(output) { 
      // window.location.href = servers[i]
      alert(servers[i]);
    }
  });
}

【问题讨论】:

  • 尝试let i而不是var i(失败的原因是i最后一次增加了,这要归功于循环结束之前的i++,现在是3servers[3]undefined)
  • @ChrisG 我测试过,它有效,请发布您的答案
  • 实际上,this 在这种情况下是更准确的答案。

标签: javascript jquery ajax for-loop scope


【解决方案1】:

您可以使用Promise.race 代替迭代。 MDN

const servers = ["url1", "url2", "url3"];
const requests = servers.map(server => $.ajax({...}));

Promise.race(requests)
    .then(/* handle the fastest request */)
    .catch(/* catch error here */)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-26
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多