From 59f21d021aab8f42b6447441438d3be6a247721e Mon Sep 17 00:00:00 2001 From: Argo-Asicotech Date: Tue, 25 Oct 2022 16:47:23 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=20InvokeAsync=20?= =?UTF-8?q?=E9=87=8D=E8=BD=BD=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BootstrapBlazor/BootstrapBlazor.csproj | 4 +- .../BootstrapModuleComponentBase.cs | 72 +++++++++++++++++-- src/BootstrapBlazor/Utils/JSModule.cs | 14 ++-- 3 files changed, 77 insertions(+), 13 deletions(-) diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index dfd2f6dd4..db8160cff 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@ - + - 6.11.24 + 6.11.25 diff --git a/src/BootstrapBlazor/Components/BaseComponents/BootstrapModuleComponentBase.cs b/src/BootstrapBlazor/Components/BaseComponents/BootstrapModuleComponentBase.cs index 8a5c814fe..de4121ad4 100644 --- a/src/BootstrapBlazor/Components/BaseComponents/BootstrapModuleComponentBase.cs +++ b/src/BootstrapBlazor/Components/BaseComponents/BootstrapModuleComponentBase.cs @@ -125,26 +125,88 @@ public abstract class BootstrapModuleComponentBase : IdComponentBase, IAsyncDisp /// /// /// - protected Task InvokeInitAsync(params object?[]? args) => InvokeAsync("init", args); + protected Task InvokeInitAsync(params object?[]? args) => InvokeVoidAsync("init", args); /// /// call javascript execute method /// /// /// - protected Task InvokeExecuteAsync(params object?[]? args) => InvokeAsync("execute", args); + protected Task InvokeExecuteAsync(params object?[]? args) => InvokeVoidAsync("execute", args); /// /// call javascript method /// - /// + /// /// /// - protected async Task InvokeAsync(string func, params object?[]? args) + protected Task InvokeVoidAsync(string identifier, params object?[]? args) => InvokeVoidAsync(identifier, CancellationToken.None, args); + + /// + /// call javascript method + /// + /// + /// + /// + /// + protected async Task InvokeVoidAsync(string identifier, TimeSpan timeout, params object?[]? args) + { + if (Module != null) + { + await Module.InvokeVoidAsync($"{ModuleName}.{identifier}", timeout, args); + } + } + + /// + /// call javascript method + /// + /// + /// + /// + /// + protected async Task InvokeVoidAsync(string identifier, CancellationToken cancellationToken = default, params object?[]? args) + { + if (Module != null) + { + await Module.InvokeVoidAsync($"{ModuleName}.{identifier}", cancellationToken, args); + } + } + + /// + /// call javascript method + /// + /// + /// + /// + protected Task InvokeAsync(string identifier, params object?[]? args) => InvokeAsync(identifier, CancellationToken.None, args); + + /// + /// call javascript method + /// + /// + /// + /// + /// + protected async Task InvokeAsync(string identifier, TimeSpan timeout, params object?[]? args) + { + if (Module != null) + { + await Module.InvokeAsync($"{ModuleName}.{identifier}", timeout, args); + } + } + + /// + /// call javascript method + /// + /// + /// + /// + /// + protected async Task InvokeAsync(string identifier, CancellationToken cancellationToken = default, params object?[]? args) { if (Module != null) { - await Module.InvokeVoidAsync($"{ModuleName}.{func}", args); + await Module.InvokeAsync($"{ModuleName}.{identifier}", cancellationToken, args); } } diff --git a/src/BootstrapBlazor/Utils/JSModule.cs b/src/BootstrapBlazor/Utils/JSModule.cs index dd5b29077..14bcf1540 100644 --- a/src/BootstrapBlazor/Utils/JSModule.cs +++ b/src/BootstrapBlazor/Utils/JSModule.cs @@ -39,10 +39,11 @@ public class JSModule : IAsyncDisposable /// /// /// - public virtual ValueTask InvokeVoidAsync(string identifier, TimeSpan timeout = default, params object?[]? args) + public virtual ValueTask InvokeVoidAsync(string identifier, TimeSpan timeout, params object?[]? args) { - var cancellationTokenSource = new CancellationTokenSource(timeout); - return InvokeVoidAsync(identifier, cancellationTokenSource.Token, args); + using CancellationTokenSource? cancellationTokenSource = ((timeout == Timeout.InfiniteTimeSpan) ? null : new CancellationTokenSource(timeout)); + CancellationToken cancellationToken = cancellationTokenSource?.Token ?? CancellationToken.None; + return InvokeVoidAsync(identifier, cancellationToken, args); } /// @@ -96,10 +97,11 @@ public class JSModule : IAsyncDisposable /// /// /// - public virtual ValueTask InvokeAsync(string identifier, TimeSpan timeout = default, params object?[]? args) + public virtual ValueTask InvokeAsync(string identifier, TimeSpan timeout, params object?[]? args) { - var cancellationTokenSource = new CancellationTokenSource(timeout); - return InvokeAsync(identifier, cancellationTokenSource.Token, args); + using CancellationTokenSource? cancellationTokenSource = ((timeout == Timeout.InfiniteTimeSpan) ? null : new CancellationTokenSource(timeout)); + CancellationToken cancellationToken = cancellationTokenSource?.Token ?? CancellationToken.None; + return InvokeAsync(identifier, cancellationToken, args); } /// -- Gitee