如何在Blazor中取消先前对运行时间更长的异步调用的调用?

时间:2020-09-17 20:57:02

标签: blazor blazor-webassembly

当我尝试使用Blazor构建快速且始终响应用户输入的GUI时,可能会出现一些运行时间更长的异步操作可能多次被调用的情况,通常是在第一次调用完成之前。现在,我想第二次调用可能有一种方法可以取消第一个调用,但是似乎要使用丑陋的CancellationTokenSource代码。

在Blazor中,如果在完成之前再次调用某些异步调用,是否有更简便的方法来设置某些异步调用以使其早日失败/终止?这似乎是许多人的需要,但我什至不确定如何在Google上进行搜索。类似于以下内容(出于某些原因,我认为这是不合理的):

public Task? pendingLoadTask = null;

public async Task Load(){
    pendingLoadTask = httpClient.GetAsync("/api/customers");
    Customers = await pendingLoadTask.CancelOnSubsequentRun();
}

public static Task<T> CancelOnSubsequentRun<T>(this Task<T> task){
   await task... //somehow cancel the pending load task
}

我最好奇的是,有什么比用不同的取消令牌给每个异步调用加注更好的方法了。

0 个答案:

没有答案