Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asynchronous 如何等待Dart未来同步完成_Asynchronous_Dart - Fatal编程技术网

Asynchronous 如何等待Dart未来同步完成

Asynchronous 如何等待Dart未来同步完成,asynchronous,dart,Asynchronous,Dart,比如说,我有一个异步函数,我想在同步函数中调用它。例如: Future<int> foo() async { // do something return 109; } int bar() { var r = wait_for_future(foo()); return r; } Future foo()异步{ //做点什么 返回109; } 整型条(){ var r=等待未来(foo()); 返回r; } 我正在寻找的是等待未来的可能实现。这甚至可以在Dart

比如说,我有一个异步函数,我想在同步函数中调用它。例如:

Future<int> foo() async {
  // do something
  return 109;
}

int bar() {
  var r = wait_for_future(foo());
  return r;
}
Future foo()异步{
//做点什么
返回109;
}
整型条(){
var r=等待未来(foo());
返回r;
}
我正在寻找的是
等待未来的可能实现
。这甚至可以在Dart中完成吗?

否,并且无法阻止主线程等待异步任务:

一旦Dart函数开始执行,它将继续执行,直到退出。换句话说,Dart函数不能被其他Dart代码中断

这意味着无法暂停并等待其他Dart代码执行。

有一个临时的–
waitFor
,允许同步等待异步方法


不过,这仅在Dart虚拟机上可用

await
不能用于非异步函数中。我认为这不是一个正确的结论,因为这是可以做到的,例如,在Python单线程代码中,使用
运行直到完成。这在Dart中可能是不可能的,但单线程与能够屈服于事件循环并不冲突。对,这就是为什么我说Dart不能做到这一点。我只是说,不能从Dart的单线程,也不能从您引用的文档部分推断出这一点。我不是要先发制人,而是要让步。听起来这是目前能找到的最好的办法。谢谢