Ajax调用完成后,永远不会调用$ .when.done()

时间:2019-01-20 07:11:30

标签: jquery ajax promise

所有5个ajax调用完成后,我想打印foobar。这意味着即使其中的4个已加载,但其中1个仍在加载,“ foobar”仍不会打印。我在线上尝试了许多解决方案,但在完成所有ajax调用后仍然无法打印foobar

const ajaxCall = (prop, url) => {
     return $.ajax({
        type: "GET",
        url: url,
        timeout: 18000000,
        success: function (data) {
          console.log(data);
          db[prop] = JSON.parse(data);
        },
        error: function (error) {
          console.log('ajax error');
        }
      });
}

const loadData = () => {
  let request_1 = ajaxCall('prop1','http://' + host + ':' + port + '/' + workspace + '/api/1.php');
  let request_2 = ajaxCall('prop2','http://' + host + ':' + port + '/' + workspace + '/api/2.php');
  let request_3 = ajaxCall('prop3','http://' + host + ':' + port + '/' + workspace + '/api/3.php');
  let request_4 = ajaxCall('prop4','http://' + host + ':' + port + '/' + workspace + '/api/4.php');
  let request_5 = ajaxCall('prop5','http://' + host + ':' + port + '/' + workspace + '/api/5.php');

    $.when(request_1,request_2, request_3, request_4, request_5)
    .done(() => {
        console.log('foobar');
    })
}

1 个答案:

答案 0 :(得分:-1)

我刚刚发现我的代码确实有效。该问题是由数据库连接问题引起的。数据库未正确连接,但AJAX仍将其响应为“完成”。