javascript - Axios 仅在自调用函数中调用一次 (Internet Explorer)

标签 javascript reactjs internet-explorer axios

我有一个函数,它每 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/

相关文章:

javascript - 在我打开控制台之前,IE9 脚本不会运行

javascript - 如何使用javascript将iframe高度设置为100%

javascript - 从 AngularJS 服务检索值而不返回它们?

javascript - 创建交互式非矩形 HTML 元素的最佳方式

javascript - 如何使 react 倒数计时器

javascript - $.parseJSON 在 Internet Explorer 10 中不工作

javascript - 检查 DOM 中是否存在元素,如果不存在,则在每次单选输入后添加

javascript - 将 Prop 传递给组件 react-router 1.0.x

reactjs - jsx中的三元将selected属性添加到选项

css - <br> &#10 &#xa 里面 <h :commandButton value> not interpreted as linebreak