小编典典

Axios在内部调用功能(Internet Explorer)中仅被调用一次

reactjs

我有一个函数,每2.5秒调用一次以检查在后台运行的任务。get如果响应为错误,则它将axios调用到url,如果响应成功,则停止该函数。

这在Chrome和Mozilla上完美运行,但由于某些原因在IE(版本11)中不起作用。该函数可以无限地调用自身,但是检查日志表明它仅调用axios一次res.data.err == "Task not ready",即使后端任务已经完成,它也将永远循环。

为什么没有在IE上再次调用axios?有什么我想念的吗?

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
            }
        }
    });
}

阅读 342

收藏
2020-07-22

共1个答案

小编典典

我在InternetExplorer(11,Edge)上也遇到了类似的问题(尽管使用了fetch),用于轮询服务。我发现使用“ Pragma:no-
cache”标头解决了该问题。

您可以尝试一下:

const config = {
    headers: { Pragma: 'no-cache'},
    params: { id: this.state.taskID }
}

该呼叫应如下所示:

axios.get(url.CHECK_UPLOAD_TASK, config).then(...)
2020-07-22