下面的代碼總是收到一個 HTTP '202 Accepted' 狀態代碼:

當我使用郵遞員嘗試相同的 API 時,我得到 200 OK”:

function ExportStatus() {
function ExportStatusAjax() {
$.ajax({
type: "GET",
url: "https://api.powerbi.com/v1.0/myorg/groups/" groupId "/reports/" reportId "/exports/" exportId "",
headers: {
"Authorization": "Bearer " accessToken
},
success: function(data, textStatus, jqXHR) {
if (jqXHR.status == 200) {
GetExportFile()
} else {
ExportStatusAjax()
}
},
error: function(err) {
alert(error)
}
});
}
ExportStatusAjax()
}
uj5u.com熱心網友回復:
我不熟悉 Power BI,所以我不能肯定地說,但從你的代碼和 API 狀態代碼來看,這看起來像是一個異步 API 的情況。這意味著,與 HTTP 中客戶端提交請求并獲得回應的傳統模型不同(這是一個 200,又名OK),客戶端提交一個 HTTP 請求,回應是一個占位符,告訴你真正的回應還沒有準備好。
202被呼叫Accepted,我相信在這種情況下,它被用來表示您的請求已被接受到佇列中。這個想法是,如果你繼續重試,最終它會完成,你會得到真正的回應,它帶有狀態代碼200. 報告、分析或其他型別的計算成本高昂的作業負載通常遵循這種模式。
這種方法是一種常見的模式。如果這確實是這里發生的事情,那么您的代碼可能是正確的,并且看到回應在202和之間翻轉200是正常的。
話雖如此,您的方法是不斷錘擊服務器。一旦它回傳 a 202,它就會立即重試,這會增加遠程系統的負載,理論上這實際上可能會減慢它的速度。
我建議放置一個計時器來延遲重試,可能每 3 秒或 5 秒左右。該setTimeout功能可以幫助您。
uj5u.com熱心網友回復:
你有一個永遠不會結束的遞回。ExportStatusAjax() 至少在 2 個地方呼叫自己。完全從您的代碼中洗掉它。如果沒有 400x 或 500x,則不要太注意狀態代碼。一旦它恢復成功,您就可以繼續。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/401530.html
上一篇:使用ajax操作選擇選項
