我有一个函数,它每 2.5 秒调用一次自身来检查在后台运行的任务。如果响应错误,它会调用 axios 来获取
一个 url,如果响应成功,我将停止该函数。
这在 Chrome 和 Mozilla 中完美运行,但由于某些原因它在 IE(版本 11)中不起作用。该函数无限地调用自身,但检查日志显示它只调用了 axios 一次,然后它有 res.data.err == "Task not ready"
永远循环,即使任务在后面 -结束已经结束了。
为什么 axios 没有在 IE 上再次被调用?有什么我想念的吗?
checkProgress() {
axios.get(url.CHECK_UPLOAD_TASK, { params: { id: this.state.taskID} }).then(res => {
if(res.data.success){
this.setState({loading: false});
//do something if successfully finished task
} else {
if(res.data.err == "Task not ready") {
setTimeout(() => {
this.checkProgress();
},2500);
} else {
this.setState({loading: false});
// do something if task had an error
}
}
});
}
最佳答案
我在 InternetExplorer (11, Edge) 上也遇到了类似的问题(尽管使用了提取)来轮询服务。我发现使用“Pragma: no-cache” header 解决了这个问题。
你可以试一试:
const config = {
headers: { Pragma: 'no-cache'},
params: { id: this.state.taskID }
}
调用应该是这样的:
axios.get(url.CHECK_UPLOAD_TASK, config).then(...)
关于javascript - Axios 仅在自调用函数中调用一次 (Internet Explorer),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45830531/