问题可能是由于 Blazor WebAssembly 应用程序中的某些 JavaScript 代码正在阻塞主线程而导致的。 在这种情况下,您可以使用 JavaScript 的 Promise 对象将 JavaScript 代码封装在异步函数内,并确保在调用任何 Blazor 方法之前,该异步函数已经完成。
示例代码:
function longRunningTask() {
return new Promise((resolve) => {
// your long running code here
resolve();
});
}
async function runLongTask() {
await longRunningTask();
// call blazor method here
}
// call runLongTask when you need to run a long JavaScript task
然后,您可以像这样在 C# 中调用 JavaScript:
await JSRuntime.InvokeAsync