我在我的Aspnet 5(Aspnet Core)WebAPI控制器中有一个操作,虽然被请求可能需要很长时间,但即使用户已取消加载,它也会运行到最后。对于aspnet中的请求或conroller / httpContext中的任何事件,是否有取消令牌的变体,这可以帮助我在用户不需要其结果时停止操作?
如果使用cancellationToken,它永远不会改变其状态:
[HttpGet]
public async Task<string> Get(CancellationToken cancellationToken)
{
await Task.Run(() =>
{
while (!cancellationToken.IsCancellationRequested) ;
return;
});
return "hi";
}
,也传递给令牌的Register方法的回调也从未被调用过。
答案 0 :(得分:0)
没有可靠的事件来处理浏览器加载停止。 IE有document.onstop
事件,其他浏览器不支持它。
也许您可以尝试类似的方法,将您的ajax调用放在window.onload
事件中。
完全加载DOM和页面中使用的其他资源后,onload事件将触发。
因此,如果用户在完全加载之前停止页面加载,window.onload
事件将不会被触发,因此您的ajax调用将不会被执行。