Dart中的异步/等待模式?

时间:2013-07-12 14:57:31

标签: asynchronous dart dart-io

Dart是否有与async/await pattern in .net远程相似的内容?

例如,我想打开一个套接字并做几次握手:发送1,等待响应1,发送2,等待响应2等等。等待响应不应该明显阻塞,这就是async就是全部约。

这是一种方法:

Socket _socket;

Socket.connect(_host, _port).then(
  (Socket socket) {
      print("socket open!");
      _socket = socket;
      socket.transform(new StringDecoder()).listen(ProcessResponse);
      socket.write("1");
  });


void ProcessResponse(String response)
{
  print("response received!");
  if (response == "1") _socket.write("2");
  if (response == "2") _socket.write("3");
  if (response == "3") _socket.write("4");
  // ... etc ..
}

我希望能够写出像

这样的东西
socket.write("1");
response1 = await socket.getResponse();
socket.write("2");
response2 = await socket.getResponse();
socket.write("3");
response3 = await socket.getResponse();
// etc.

即。编写看起来同步并且更容易理解的代码,但实际上是异步运行。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

不,还没有。不过,这是一个非常广泛需要的功能。请参阅https://code.google.com/p/dart/issues/detail?id=104(并解决问题的主题)。

现在它有: https://www.dartlang.org/articles/await-async/