Javascript - 使用 PHP 后的 Promise,得到未定义的结果

标签 javascript arrays post promise

我是 JS 的新手,对异步程序和 Promise 知之甚少。我在从 PHP 后的代码中获取结果时遇到问题:

showModalLink = function(d, i) {
$('#myModalLabel').text(d.source.name + ' - ' + d.target.name);
$('#modalJum').text(d.jumlahlelangsama);
var lelang = d.daftarlelangsama.split(", ");
var lelangmodal = [];
var promises = [];
for (var i = 0; i < lelang.length; i++) {
   querystring = "select pemenang from lelang where id = " + lelang[i];
   console.log(querystring);
    var queryobj = {
        query: querystring
    };
    promises.push($.post('indikasi3modal.php', queryobj));   
}
Promise.all(promises).then(function(results) {
  if (results[i] == d.source.name) {
    console.log("1");
    lelangmodal.push(lelang[i] + " - dimenangkan oleh " + d.source.name);
    console.log(lelangmodal);
  }
  else if (results[i] == d.target.name) {
    console.log("2");
    lelangmodal.push(lelang[i] + " - dimenangkan oleh " + d.target.name);
    console.log(lelangmodal);
  }
  else {
    console.log("3");
    lelangmodal.push(lelang[i]);
    console.log(lelangmodal);
  }
  $('#modalLelang').text(lelangmodal);
  $('#myModal').modal('show');      
});}

我不知道为什么 results[i]then 函数循环内返回 undefined。任何帮助(或解决此问题的替代方法)表示赞赏。谢谢!

最佳答案

I have no idea why the results[i] return undefined inside then function loop.

因为 .then() 函数中没有循环。因此,i 的值是创建所有 Promise 的循环结束时的值,即创建的 Promise 的数量。但结果的索引从0i-1

Promise.all(promises).then(function(results) {
  for (var i = 0; i < results.length; i++) {
    if (results[i] == d.source.name) {
      console.log("1");
      lelangmodal.push(lelang[i] + " - dimenangkan oleh " + d.source.name);
      console.log(lelangmodal);
    } else if (results[i] == d.target.name) {
      console.log("2");
      lelangmodal.push(lelang[i] + " - dimenangkan oleh " + d.target.name);
      console.log(lelangmodal);
    } else {
      console.log("3");
      lelangmodal.push(lelang[i]);
      console.log(lelangmodal);
    }
  }
  $('#modalLelang').text(lelangmodal);
  $('#myModal').modal('show');
});

关于Javascript - 使用 PHP 后的 Promise,得到未定义的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39556665/

相关文章:

java - JsonArrayBuilder 给出空白输出

javascript - 如何使用 io-ts 验证数组长度?

python - PIL : Open an image from a POST HTTP request

JavaScript radio 输入

javascript - jQuery 弹出窗口在第一次单击时不起作用

javascript - 在 XBOX 上检测 IE10

javascript - 如何以最少的步骤验证数组是否存在及其长度?

ios - Rails API 的 POST 方法

pdf - PDF 可填写表单可以将自身发布到 HTTPS URL 吗?

javascript - React HandleDelete TypeError 未定义