Ich benutze AppEngine und schrieb eine Server-Anwendung in Dart. Da die gcloud-API Futures für fast alles verwendet, nutze ich sie auch. Das Problem jedoch, sobald ich anfange, Futures zu verwenden, wird BadStateException
geworfen. Siehe die beiden folgenden Beispiele.Dart AppEngine Header bereits gesendet, wenn Futures
Arbeits Server
runAppEngine((HttpRequest request) {
request.response
..writeln('Hello world')
..statusCode = HttpStatus.OK
..close();
}, port: port);
Ausgang:
Hallo Welt
Problem Server: Header gesendet bereits
Future _asyncTask(HttpRequest request) {
return new Future(() {
request.response
..writeln('Hello world')
..statusCode = HttpStatus.OK; // causes BadStateException
}).catchError((e) {
request.response.writeln(e.toString());
}).whenComplete(() {
request.response.close();
});
}
runAppEngine((HttpRequest request) {
return _asyncTask(request);
}, port: port);
Ausgang:
Hallo Welt
Bad Zustand: HTTP-Header wurden bereits gesendet.
würde Ich mag Futures verwenden, aber aus irgendwelchen Gründen, ich kann einfach nicht loswerden der BadStateException
bekommen. Kann mir jemand auf das hinweisen, was ich falsch mache?