因为服务端在接受请求之后,如果马上返回接口请求,那么线程就会被销毁,所以及时做了异步操作,也没办法继续保持计算。
所以可以在通过以服务端请求另一个新的接口的方式来使得在返回给前端结果后,服务端能继续运算。
代码如下:
[HttpGet("/Test")]
[ProducesJson(typeof(string))]
public async Task<string> Test() {
//HttpGetAsync是一个异步请求的方法,不使用await阻塞的话,代码会直接运行下去不会等待
HttpGetAsync("/Test2");
return "1";
}
[HttpGet("/Test2")]
[ProducesJson(typeof(string))]
public async Task<string> Test2() {
//进行计算处理,这里可以写自己需要在后端一直计算的处理逻辑
await service.Test2();
}
那么前端如何得知,服务端是否计算完了呢?
服务端可以将计算的进度存在缓存里,然后提供一个接口读取缓存中的计算进度返回给前端,让前端来定时调用进行调用,得知服务端的计算进度。