后端接口处理时间太长,前面页面接口相应超时,如何处理?

各位好,在项目中会遇到这样的情况,由于后台执行某一个接口计算处理大概1分钟左右。这时前台请求一段时间后,得不到返回结果就会发生请求超时,各位有什么好的办法嘛,能够保证对用户友好就可以

阅读 12.6k
10 个回答

这种建议从业务操作上面去思考解决方案。而不是技术本身。

耗时比较长的话,建议做成异步任务处理。不要阻塞用户操作。
即将该任务分开。

  • 提交任务。提交即结束,不必等待处理结果。仅返回类似一个taskId
  • 根据taskId查询任务状态。可轮询或交由用户手动刷新。

你要先考虑使用这个项目的客户能不能接受一分钟的等待。能接受,就加个loading;不能接受,让产品经理和后端交流去吧

前端可以弄个定时器定时刷新状态,判断如果状态未完成,就发起请求获取状态,直到状态已完成,则不再发送请求

要看下这个计算能不能提前做 如果不能提前 那就让产品考虑新的交互逻辑

新手上路,请多包涵

你这个问题的话实际这种情况是个公司的项目都有这个问题,建议是发送请求的时候设置一下超时时长,目的主要是解决你这个接口请求超时的问题,之后在去考虑优化你的代码,如果有数据库操作的话,建议去优化sql去加快接口的相应速度。

什么业务要计算一分钟,让后端优化处理逻辑,或者优化业务呀

新手上路,请多包涵

我们业务场景里有个上传文件的接口,但是会有文件比较大的情况,这个时候对应的接口处理时间就会比较长,也会有还没有返回结果就已经请求超时了。
我们是在接口里面设置了timeout时长比较长来对应处理这个问题的,举例:
axios({

method: 'post',
url: '/res/api/uploadFile',
data: param,
timeout: 10 * 1000 * 60

}).then(res => {})
不知道这样处理是否能解决你的问题,可以参考一下

通过websocket响应结果如何

超时时间设置到2分钟,前端加 loading 进度条

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏