首页 > 解决方案 > 通过 AJAX 函数循环 - 导致无限循环

问题描述

我是如此坚持这一点。我有一个函数A,我想调用函数B(我的API调用)并让它返回数据的结果。API 是“队列”和“获取”类型。它应该像这样运行:

  1. 使用“队列”类型运行 API 查询
  2. 收集返回的reportID
  3. 使用“get”类型和 reportID 运行 API 查询
  4. 将数据收集到 myfunction

这是我当前的代码:

function myfunction() {
  var ref;
  var type = "queue";
  var metric = "pageviews";
  var post = getReport(ref, type, metric);
    post.done(function (r) {
        console.log (r);
        }
    );
}

function getReport(ref, type, metric) {
   return $.ajax({
        url: "report.php", 
        dataType: 'json',
        data: { 
            ref: ref,
            type: type, 
            metric: metric
        }
    });
}

这工作正常。但是,对于查询的第二部分,我无法使循环正常工作。这是我尝试过的:

function myfunction() {
  var ref;
  var type = "queue";
  var metric = "pageviews";
  var post = getReport(ref, type, metric);
    post.done(function (r) {
        if (type == "queue")
        {
        myfunction(r.reportID,"get");
        }
        else if (type == "get")
        {
        console.log(r);
        }
    );
}

我不断覆盖类型的值,这似乎会导致无限循环。

标签: javascriptjquery

解决方案


这是一个链接(实际上:嵌套)API 调用的基本解决方案:

function myfunction(ref) {
  getReport(ref, "queue", "pageviews").done(function(r1) {
    getReport(r1.reportID, "get", null).done(function(r2) {
      console.log(r2);
    })
  });
}

function getReport(ref, type, metric) {
  return $.getJSON("report.php", {
    ref: ref,
    type: type,
    metric: metric
  });
}

(我猜你的 API 是如何工作的/它返回什么,但它应该很容易适应)


推荐阅读