Próbuję utworzyć strumień serwera WWW. Oto kod:Różnica między oczekiwaniem i słuchaniem w Dart
import 'dart:io';
main() async {
HttpServer requestServer = await HttpServer.bind(InternetAddress.LOOPBACK_IP_V4, 8000);
requestServer.listen((request) { //comment out this or the await for to work
request.response
..write("This is a listen stream")
..close();
});
await for (HttpRequest request in requestServer) {
request.response
..write("This is an await for stream")
..close();
}
}
Na czym polega różnica między oczekiwaniem a odsłuchaniem? Oboje nie działają w tym samym czasie. Musisz komentować jeden lub drugi, aby działał, ale tutaj nie ma różnicy w funkcjonowaniu. Czy istnieją okoliczności, w których występuje różnica i kiedy należy korzystać z jednej nad drugą?
Opcja 'czekają for (var x w strumieniu) ...' składnia jest bliżej równoznaczne z 'czekają stream.forEach ((x) {...}) niż' 'listen', podobnie jak' for (var x in iterable) ... 'jest podobne do' iterable.forEach ((x) {...}) '. Różnice wynikają z pętli 'for', które umożliwiają sterowanie przepływem, którego' forEach' nie ma. – lrn