gpt4 book ai didi

javascript - 如果我们得到某个结果,请重试函数 promise

转载 作者:行者123 更新时间:2023-11-30 14:21:10 28 4
gpt4 key购买 nike

我非常接近这个工作。此代码查询 API 以返回 reportID,然后使用 reportID 再次查询以获取数据。

function myfunction(ref) {
getReport(ref, "queue", "hour", "2018-10-03", "2018-10-04", "pageviews", "page").done(function(r1) {
getReport(r1.reportID, "get").done(function(r2) {
if (r2.error == "report_not_ready") {
console.log("Not ready");
setTimeout(function() {
myfunction(ref)
}, 1000);
}
console.log(r2);
})
});
}


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

此代码的问题是,有时当我们尝试获取报告时报告尚未准备好,因此我们需要稍后重试。如果返回未就绪,我目前拥有的代码会再次重新运行整个报告,包括生成新的报告 ID。

它的目的只是重试原始 reportID。

谁能帮我理解如何做到这一点?

最佳答案

以下代码调用 api 3 次然后退出,

function reportHandler(id, r2, retries){
if(retries >= 3){
console.log("tried 3 times")
return
}
if (r2.error == "report_not_ready") {
console.log("Not ready");
setTimeout(function() {
getReport(id, "get").done(r2=>reportHandler(id, r2, retries + 1))
}, 1000);
}
console.log(r2);
}

function myfunction(ref) {
getReport(ref, "queue", "hour", "2018-10-03", "2018-10-04", "pageviews", "page").done(function(r1) {
getReport(r1.reportID, "get").done(r2=>reportHandler(r1.reportID, r2, 0))
});
}

关于javascript - 如果我们得到某个结果,请重试函数 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52721442/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com