Javascript 通过AJAX函数进行循环-导致无限循环
我被这件事缠住了。我有一个function,我想调用functionB(我的API调用),并让它返回数据的结果。API是“队列”和“获取”类型。它应该是这样运行的:Javascript 通过AJAX函数进行循环-导致无限循环,javascript,jquery,Javascript,Jquery,我被这件事缠住了。我有一个function,我想调用functionB(我的API调用),并让它返回数据的结果。API是“队列”和“获取”类型。它应该是这样运行的: 使用“队列”类型运行API查询 收集返回的reportID 使用“get”类型和reportID运行API查询 将数据收集到myfunction中 这是我当前的代码: function myfunction() { var ref; var type = "queue"; var metric = "pageviews"
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);
}
);
}
我一直在覆盖type的值,这似乎会导致无限循环。这里有一个基本解决方案,可以链接(实际上:嵌套)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是如何工作的/它返回了什么,但它应该很容易适应)你在哪里将
type
的值从queue
更改为get
另外,你还需要为你的函数添加参数。@ThoVu当我调用函数myfunction(r.reportID,“get”);但即使我把它放回函数中,它仍然会被覆盖。你试图解决一个本来不应该存在的问题。为什么要在那里调用递归的myfunction
?当您执行myfunction(r.reportID,“get”)
只需完全忽略“get”
。不仅有myfunciton
没有参数,即使它有参数,您还通过将其硬编码为“队列”来隐藏type
——谢谢您,克里斯,这太棒了