我需要澄清如何使用dart中的async和await和将来的API解决以下代码。
void main()
{
print("Program starts");
printdart(1);
print("Program finishes");
}
printdart(int temp)
{
int i;
for(i=temp;i<=1000;i++)
{
print("dart");
if(i%10==0)
{
printangular(i+1);
break;
}
}
}
printangular(int temp)
{
int i;
for(i=temp;i<=1000;i++)
{
print("angular");
if(i%10==0)
{
printdart(i+1);
break;
}
}
}
如何在dart中实现异步和等待
答案 0 :(得分:0)
我认为您需要研究更多Dart如何处理线程。我无法在这里解释所有内容,但是基本上Dart仅运行一个线程,因此您的所有代码都只会阻止该线程,异步操作将无济于事。
Dart还具有隔离程序,可以在多个线程中运行,但是由于它们非常隔离,因此传递和从中获取数据并不容易。
异步/等待最适合网络请求和文件访问,因为它们一旦激活便会阻塞,因此线程可以暂时忽略它们,并在有新值时返回那里。另一方面,您的代码不会阻塞,因此您无法等待它。
不过,有一种方法,您需要折射代码以使其产生值,然后可以异步等待它们。在这种情况下,您需要阅读有关异步生成器的信息,并查看它们如何工作,以便可以相应地重新格式化代码。
答案 1 :(得分:0)
在您提供的代码中,无需等待代码进行繁重的工作。
下面是代码的修改版本。在这里,代码将等待一段时间,然后再次调用。同时,其余代码将被执行。
import 'dart:async';
void main() {
print("Program starts");
printdart();
printangular();
print("Program finishes");
}
printdart() async {
int i;
for (i = 1; i <= 4; i++) {
print("dart");
await Future.delayed(const Duration(seconds: 2));
}
}
printangular() async {
int i;
for (i = 1; i <= 4; i++) {
print("angular");
await Future.delayed(const Duration(seconds: 1));
}
}
回答您的问题:
async
:一个关键字,告诉编译器该函数将需要一些时间才能完成,但与此同时,请返回并运行程序的下一部分,并在完成此功能后返回。
await
:这允许您等待过程完成,然后跳转到下一行。