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

各位好,在项目中会遇到这样的情况,由于后台执行某一个接口计算处理大概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

回到顶部