gpt4 book ai didi

javascript - XHR 失败时的回退,在 XHR 功能之外

转载 作者:行者123 更新时间:2023-11-28 01:11:56 28 4
gpt4 key购买 nike

我正在执行 XMLHttpRequest,如果失败,我想回退到执行其他操作(读取本地文件),但我想在 XHR 函数 (getDBfileXHR) 本身之外执行此操作。

我也在使用 Jquery。

考虑到它似乎不适用于 .done().fail(),也许使用延迟变量或还有别的吗?

getDBfileXHR( encode_utf8("http://john:hispasswd@mysite.com/DBfile.jsonp") );
//here I want to do something else if getDBfileXHR fails like this :
fallbackToLocalDBfile();


function getDBfileXHR(url) {
var request = new XMLHttpRequest();
request.open("GET", url, true); //3rd parameter is sync/async
request.onreadystatechange = function() { //Call a function when the state changes.
if (request.readyState == 4) {
if (request.status == 200 || request.status == 0) {
console.log('we get a response from XHR');
var jsonText = request.responseText.replace("callback(", "");
jsonText = jsonText.replace(");", "");
storeJsonInProdata(JSON.parse(jsonText));
dbReadyDeferred.resolve();
} else {
console.log('error : request.status = '+request.status);
}
}
}
console.log("Sending XMLHttpRequest...");
request.send();
}

function fallbackToLocalDBfile(){
$.get('proDB.jsonp').done(function(data){
console.log(data);
//storeJsonInProdata(data);
//dbReadyDeferred.resolve();
});
}

最佳答案

嗯,也许是这样的:

   var d=$.Deferred()

function getDBfileXHR(url) {
....
if (request.readyState == 4) {
...
d.resolve(_MyData);
} else {
console.log('error : request.status = '+request.status);
d.reject(_myError);

}
}
}
console.log("Sending XMLHttpRequest...");
request.send();
}

d.done(function (a){...}).fail(function (b){});

关于javascript - XHR 失败时的回退,在 XHR 功能之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24324368/

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