Не могу получить синхронный результат от ijsruntime.invokeasync ()C#

Место общения программистов C#
Ответить
Anonymous
 Не могу получить синхронный результат от ijsruntime.invokeasync ()

Сообщение Anonymous »

Вот какой -то код:
App.razor



















window.Foo_JS = async function () {
var obj = {};
obj.message = "Hello from JS";

return await new Promise((resolve, reject) => {
resolve(JSON.stringify(obj));
});
}





main.razor
@using System.Net.Http
@using System.Net.Http.Json
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using static Microsoft.AspNetCore.Components.Web.RenderMode
@using Microsoft.AspNetCore.Components.Web.Virtualization
@using Microsoft.JSInterop
@using Microsoft.JSInterop.Implementation
@inject IJSRuntime JSR
@rendermode InteractiveServer
@page "/"

@code {

public string fromStandardMethod
{
get
{
string task = Task.Run(() =>
{
return StandardMethod().Result;
}).Result;

return task;
}
}
public string fromJSRInvokeAsync
{
get
{
string task = Task.Run(() =>
{
return JSRInvokeAsync().Result;
}).Result;

return task;
}
}

// Works fine
public async Task StandardMethod()
{
await Task.Delay(100);
return "Standard method";
}

// System.AggregateException: One or more errors occurred. (One or more errors
// occurred. (One or more errors occurred. (A task was canceled.)))
public async Task JSRInvokeAsync()
{
await Task.Delay(100);
return await JSR.InvokeAsync("window.Foo_JS");
}

protected override async Task OnAfterRenderAsync(bool firstRender)
{
await JSR.InvokeVoidAsync("alert", fromStandardMethod);
await JSR.InvokeVoidAsync("alert", fromJSRInvokeAsync);
}

}

Я пытаюсь получить строку результата от ijsruntime.invokeasync () в «Getter», но что -то пошло не так. Когда я называю код без ijsruntime.invokeasync () , он работает нормально. Что я делаю неправильно и как это можно исправить в моем коде?Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost[111]
Unhandled exception in circuit 'TFxKutHcuL9njLexzxgn2hVjqwJMTGbg638hLfyACk8'.
System.AggregateException: One or more errors occurred. (One or more errors occurred. (A task was canceled.))
---> System.AggregateException: One or more errors occurred. (A task was canceled.)
---> System.Threading.Tasks.TaskCanceledException: A task was canceled.
at System.Threading.Tasks.Task.GetExceptions(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
at Web.WorkSpace.Pages.Main.b__4_0() in C:\Users\Shadow\Desktop\Web\Web\WorkSpace\Pages\Main.razor:line 38


Подробнее здесь: https://stackoverflow.com/questions/797 ... nvokeasync
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»