后端接口处理时间太长,前面页面接口相应超时,如何处理?
各位好,在项目中会遇到这样的情况,由于后台执行某一个接口计算处理大概1分钟左右。这时前台请求一段时间后,得不到返回结果就会发生请求超时,各位有什么好的办法嘛,能够保证对用户友好就可以
回答:
这种建议从业务操作上面去思考解决方案。而不是技术本身。
耗时比较长的话,建议做成异步任务处理。不要阻塞用户操作。
即将该任务分开。
- 提交任务。提交即结束,不必等待处理结果。仅返回类似一个taskId
- 根据taskId查询任务状态。可轮询或交由用户手动刷新。
回答:
你要先考虑使用这个项目的客户能不能接受一分钟的等待。能接受,就加个loading;不能接受,让产品经理和后端交流去吧
回答:
前端可以弄个定时器定时刷新状态,判断如果状态未完成,就发起请求获取状态,直到状态已完成,则不再发送请求
回答:
可以试着改成 sse 响应如何?
后端一直给前端返回任务进度, 最后发个完成的事件.
https://developer.mozilla.org...
回答:
要看下这个计算能不能提前做 如果不能提前 那就让产品考虑新的交互逻辑
回答:
你这个问题的话实际这种情况是个公司的项目都有这个问题,建议是发送请求的时候设置一下超时时长,目的主要是解决你这个接口请求超时的问题,之后在去考虑优化你的代码,如果有数据库操作的话,建议去优化sql去加快接口的相应速度。
回答:
什么业务要计算一分钟,让后端优化处理逻辑,或者优化业务呀
回答:
我们业务场景里有个上传文件的接口,但是会有文件比较大的情况,这个时候对应的接口处理时间就会比较长,也会有还没有返回结果就已经请求超时了。
我们是在接口里面设置了timeout时长比较长来对应处理这个问题的,举例:
axios({
method: 'post',url: '/res/api/uploadFile',
data: param,
timeout: 10 * 1000 * 60
}).then(res => {})
不知道这样处理是否能解决你的问题,可以参考一下
回答:
通过websocket响应结果如何
回答:
超时时间设置到2分钟,前端加 loading 进度条
以上是 后端接口处理时间太长,前面页面接口相应超时,如何处理? 的全部内容, 来源链接: utcz.com/p/944894.html