【问题标题】:send api call before refreshing刷新前发送api调用
【发布时间】:2020-09-03 20:57:37
【问题描述】:

我的应用中某处有这段代码


axios.post('url', {id:123});

window.location.href = window.location.pathname + '?lang=' + this.language;

问题是,请求被取消,可能是因为刷新立即发生..

我试过了:

window.addEventListener('unload', (event) =>  {
   axios.post('url', {id:123});
});
window.location.href = window.location.pathname + '?lang=' + this.language;

这没有帮助。仍然被取消。

在刷新之前发送api请求的解决方案是什么?我不想使用 setTimeout,因为我不能等待超过 1 秒才能进行刷新。

【问题讨论】:

  • 你在用vue路由器吗?
  • axios 返回承诺...你为什么不使用回调来重定向?
  • @BoussadjraBrahim 是的..

标签: javascript vue.js axios


【解决方案1】:

你是对的。 axios.post() 是异步的,因此页面在帖子完成之前被重定向。试试这样的:

axios.post('/api/persons/unique/alias', {
        params: {
            id:123
        }
    })
    .then((response) => {
        window.location.href = window.location.pathname + '?lang=' + this.language;
    });

【讨论】:

  • 在这种情况下,我必须等待请求结束,这有时可能需要 1-2 秒,这意味着在此之前不会发生刷新。那是我不能接受的东西..
猜你喜欢
  • 2020-06-20
  • 2012-04-10
  • 1970-01-01
  • 2019-04-12
  • 1970-01-01
  • 2014-02-06
  • 2015-03-19
  • 2021-01-24
  • 2017-12-17
相关资源
最近更新 更多