如何在Blazor中模拟setTimeout?

问题描述

我正在尝试在Blazor中复制一个简单的JS方法。这个想法是键入给定单词/句子/等中的每个字符。 W3Schools就是一个很好的例子,说明了一种快速方法。因此,以他们的示例为例,如何在C#中做与JS中相同的事情?

alias ghci='stack ghci'

我敢肯定这不是一个方法,因此在这里,但是我认为必须通过Threading来做与var i = 0; var txt = 'Lorem ipsum dummy text blabla.'; var speed = 50; function typeWriter() { if (i < txt.length) { document.getElementById("demo").innerHTML += txt.charat(i); i++; setTimeout(typeWriter,speed); } } 相同的事情,只是不确定如何去掺杂。还尝试通过后面的代码中的变量更新HTML。

以下是我到目前为止尝试过的内容

HTML:

setTimeout

Blazor背后的代码

<div>
  @message
</div>

任何关于最佳方法的建议都将受到赞赏!

解决方法

尝试类似

Task.Run(async() =>
{
  for (int i=1; i <= Message.Length; i++) 
  {
      TextToShow = Message.Substring(0,i);
      InvokeAsync(StateHasChanged);
      await Task.Delay(500);
  }
}) ;
,

致电InvokeAsync(StateHasChanged)应该可以:

...
        protected static void TypeMessage(object o)
        {
            if (charIndex < toType.Length)
            {
                message = message + toType[charIndex];
                charIndex++;
                InvokeAsync(StateHasChanged);
            }
        }