I have an IAsyncenumerable network request. But only refresh the UI after the response is completed #63342
-
I don't know what I need to pay attention to. @if (Deltas == null)
{
<MButton OnClick="() => MessageChanged.InvokeAsync(Message.NewUserMsg(null))">NewUserMsg</MButton>
<MButton OnClick="() => MessageChanged.InvokeAsync(Message.NewSystemMsg(null))">NewSystemMsg</MButton>
<MButton OnClick="() => MessageChanged.InvokeAsync(Message.NewAssistantMsg(null))">NewAssistantMsg</MButton>
<MButton OnClick="() => MessageChanged.InvokeAsync(new MessageTool(null, null))">MessageTool</MButton>
<MButton OnClick=" Response ">From API</MButton>
}
else
{
@foreach (var item in Delta)
{
<text>@item.ReasoningContent</text>
}
<MDivider />
@foreach (var item in Delta)
{
<text>@item.Content</text>
}
<MDivider />
@foreach (var item in Delta)
{
<text>@item.ToolCalls?[0]</text>
}
}
@code {
[Inject]
DeepSeekApiClient ds { get; init; }
ChatResponseDelta<ChoiceDelta>? Deltas = null;
List<MessageAssistant> Delta = [];
async Task Response()
{
Deltas = await ds.ChatStreamAsync();
var c = Observable.Interval(TimeSpan.FromMilliseconds(1)).ToAsyncEnumerable();
await foreach (var item in Deltas.Zip(c, (a, b) => a))
{
await Task.Delay(1);
Delta.Add(item.Delta);
StateHasChanged();
}
await MessageChanged.InvokeAsync((await Deltas).Choices[0].Message);
}
[Parameter]
public EventCallback<Message?>
MessageChanged
{ get; set; }
} DeepSeekApiClient code in github |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments
-
In the console program. He will receive data immediately upon response. |
Beta Was this translation helpful? Give feedback.
-
If you are using blazor webassembly try to also set |
Beta Was this translation helpful? Give feedback.
If you are using blazor webassembly try to also set
request.SetBrowserResponseStreamingEnabled(true);
See https://learn.microsoft.com/en-us/aspnet/core/blazor/call-web-api?view=aspnetcore-9.0#httpclient-and-httprequestmessage-with-fetch-api-request-options
With .NET 10 it will be the default: dotnet/runtime#112442