javascript - 通过 AJAX 函数循环 - 导致无限循环
问题描述
我是如此坚持这一点。我有一个函数A,我想调用函数B(我的API调用)并让它返回数据的结果。API 是“队列”和“获取”类型。它应该像这样运行:
- 使用“队列”类型运行 API 查询
- 收集返回的reportID
- 使用“get”类型和 reportID 运行 API 查询
- 将数据收集到 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);
}
);
}
我不断覆盖类型的值,这似乎会导致无限循环。
解决方案
这是一个链接(实际上:嵌套)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 是如何工作的/它返回什么,但它应该很容易适应)
推荐阅读
- postgresql - 验证 postgresql 备份
- r - R:如何为 xts 对象跨行应用?
- ios - 显示一个 UIView / UIControl 重叠 UIToolbar
- java - 以编程方式在android中更改textview颜色的新方法是什么
- selenium - 当我尝试在 selenium 中使用无头浏览器登录 gmail 时,无法找到元素错误
- ruby-on-rails - 如何在 rails only 查询中包含嵌入的文档
- javascript - Highcharts Sankey 颜色不适用于结束列
- android - Android可绘制自定义形状描边多个项目
- angular - Angular/Typescript 评估和这个
- android - Android WebRTC 中的本地视频渲染器