前端接口请求超时

最近开发中遇到接口超时问题,
背景:数据计算量过大,接口响应时间过长时,网关会报超时,页面就挂了
想请教下各位大神前端有什么比较好的方案可以进行优化吗(比如超时给个提示,不让页面挂掉)

阅读 9.1k
3 个回答

你用前后端不分离的表单形式那就没办法,直接就 502/504,即便你能自定义错误页面也是很不友好的。就得改造成 AJAX,这样你才能在 JS 里捕捉到错误好给个提示啥的。

不建议采用增大网关的超时等待时间这种粗暴的做法,因为尽快挂掉也是为了给后来的请求腾地方,要不然全都堆积在那儿了。


如果你的业务确实就是有经常性的大量计算,最好改造成提交和查询两步进行,提交数据后直接返回一个任务 ID 之类的,后台异步地去执行,别让前端等。此时前端显示个 loading 之类的,等后台处理好以后通过某种方式告知前端(轮询也好、WebSocket 也罢)再获取执行结果。

可以参考微信商户或者支付宝商户导出订单的那种业务逻辑,你提交查询条件后就立刻返回,等它生成好了你再去下载。

服务端渲染啊?超时给个错误页面

如果是普通的ajax那就是代码不行

后台时间太久,对前端用户非常不友好。

全局设置超时时间(单位ms)

axios.defaults.timeout = 2500;    //2.5s

单独设置超时时间(单位ms)

axios.get('/longRequest', {
  timeout: 5000
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题