我正在努力完成以下任务:
但是目前,由于抛出的错误,我无法继续执行代码。为此我尝试了:
try{
$.getJSON('/services/getData').success(function(data) {
configurationObject = data["configuration"];
})
} catch(err) {
console.log("error");
}
和
$.getJSON('/services/getData').success(function(data) {
configurationObject = data["configuration"];
})
.error(function(){
console.log("keep running please")
}
但两者都只是停止执行完整的JavaScript代码。在使用ajax调用时发生错误后,有什么方法可以继续运行吗?
答案 0 :(得分:0)
尝试习惯promises来执行异步任务。如果我在哪里使用jQuery
,这就是我会怎么做的function getData() {
return $.getJSON('/services/getData').then(function(data){
configurationObject = data["configuration"];
return configurationObject
}, function(err) {
var dfd = $.Deferred();
if (err.status === 400) {
? setTimeout(function () {
dfd.resolve(getData());
}, 1000)
} else {
dfd.reject(err)
}
return dfd.promise();
})
}
getData().then(successFn, errorFn)
但如果我在使用es7和async / await以及只是vanilla javascript时会失败那么这就是我将如何做到而不是
const sleep = delay => new Promise(rs => setTimeout(rs, delay))
async function getData() {
const res = await fetch('/services/getData')
if (res.status === 400) {
await sleep(1000)
return getData()
} else if (!res.ok) {
throw new Error('Could not get data')
}
const json = await res.json()
configurationObject = json['configuration']
return configurationObject
}
getData().then(successFn, errorFn)
答案 1 :(得分:0)
请参阅http://api.jquery.com/jQuery.getJSON/
.error
处理程序已被删除。您可以使用.fail
代替其处理程序接收jqXhr
参数。从那里,您可以阅读status
来检查400等。