Как страница ASP. Net Core Blazor может обновить sh ее содержимое после возвращения асинхронного метода получения данных c? - PullRequest
0 голосов
/ 09 февраля 2020

Вопрос не в том, как заставить это работать, оно работает. Мне просто интересно, но я не могу выяснить, что происходит в фоновом режиме, чтобы заставить его работать.

Ярким примером является стандартный шаблон веб-приложения сервера Blazor, в котором есть компонент "counter" и "fetchdata". В компоненте fetchdata вызывается protected override async Task OnInitializedAsync(), и компонент отображает сам себя. Если OnInitializedAsyn c () не возвращается вовремя, рендеринг по-прежнему происходит, в примере, просто записывающем загрузку ... Затем, когда OnInitializedAsyn c () фактически завершается, компонент магически перерисовывается, но что послужило причиной повторного рендеринга? как это связано вместе?

Часто ли фреймворк просматривает память класса, чтобы выяснить, нужен ли повторный рендеринг? Это просто, что есть вызов для отображения страницы перед вызовом OnInitializedAsyn c () и один после его ожидания?

1 Ответ

2 голосов
/ 09 февраля 2020

Все это основано на асинхронном c программировании ...

protected override async Task OnInitializedAsync()
{        
    forecasts = await ForecastService.GetForecastAsync(DateTime.Now);
}

Метод OnInitializedAsyn c, который вы упомянули, состоит из двух частей: синхронной и асинхронной. Когда метод OnInitializedAsyn c начинает выполняться, выполняется вызов ожидаемого метода GetForecastAsyn c, управление передается вызывающему коду, среде выполнения Blazor, которая начинает визуализацию интерфейса без задержки. Это первый раз, когда ваш компонент отображается. Это также, почему вы должны проверить в коде, что переменная прогнозы не нуль. Когда GetForecastAsyn c возвращается и заполняется переменная прогнозов, до конца метода выполняется больше кода (если он существует), после чего ваш компонент снова выполняет повторную визуализацию, на этот раз прогнозы не равны нулю, и, таким образом, таблица отображается , Конечно, это было упрощенное объяснение. Вы можете проверить процесс, шаг за шагом, просмотрев код, который делает это: Все начинается здесь . Это не должно быть трудно следовать. Нет волхвов c

Надеюсь, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...