javascript - 如何在进一步执行 js 之前从循环中收集 $.get 的所有结果

标签 javascript php jquery

我有一个 js for 循环,在循环内它会从 php 脚本中获取值。

如何在脚本进一步执行之前收集所有值?

我现在拥有的:

for(var i=0; i<TabelArray.length; i++) {
  $.get({
        url: drawURL + '/tabelPrice&name=' + name + '&width='+ width + '&height=' + height,
    dataType: 'json',
    success: function(data) {
        //console.log("succes");
        console.log(data);
    }, 
    error: function() {
       callback(false);
    }
    });
}
console.log("after loop");

打印出: “循环后” “值1” “值2”

我怀疑/需要的地方: “值1” “值2” “循环后”

最佳答案

您必须使用回调等待所有调用返回:

var results = [];

var after_loop = function () {
  console.log("after loop");
  // do whatever you want with results
};

var process_data_ok = function (data) {
  console.log(data);

  results.push(data);
  if ( results.length == TabelArray.length ) {
    after_loop();
  }
};

var process_data_fail = function () {
  console.log(false);

  results.push(false);
  if ( results.length == TabelArray.length ) {
    after_loop();
  }
};

for(var i=0; i<TabelArray.length; i++) {
  $.get({
    url: drawURL + '/tabelPrice&name=' + name + '&width='+ width + '&height=' + height,
    dataType: 'json',
    success: process_data_ok, 
    error: process_data_fail
  });
}

关于javascript - 如何在进一步执行 js 之前从循环中收集 $.get 的所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48180321/

相关文章:

javascript - await 的异步映射函数返回 Promise 而不是值

javascript - Node.JS - promise 不等待解决

php - 单个查询生成2行

java - 从 Android (WiFi/GPRS) 执行 PHP 脚本的显着运行时差异

javascript - 将动态图像与 HTML5 WebGL 360 度全景查看器与 Codeigniter 中的 Three.js 集成

php - Jquery自动完成在一行中显示来自mysql的两行

javascript - JavaScript Regex捕获十进制的重复部分

javascript - 使用 jQuery 居中一个灵活的 div

javascript - 自动完成 Jquery 多行

jquery - 超链接在 iPhone 4/4s 上不起作用