[英]Can I use Dart async/await for post requests in browser?
我使用這個示例https://webdev.dartlang.org/articles/get-data/json-web-service作為開發使用 API 端點數據的 Dart 應用程序的起點:
void saveData() {
HttpRequest request = new HttpRequest(); // create a new XHR
// add an event handler that is called when the request finishes
request.onReadyStateChange.listen((_) {
if (request.readyState == HttpRequest.DONE &&
(request.status == 200 || request.status == 0)) {
// data saved OK.
print(request.responseText); // output the response from the server
}
});
// POST the data to the server
var url = "http://127.0.0.1:8080/programming-languages";
request.open("POST", url, async: false);
String jsonData = '{"language":"dart"}'; // etc...
request.send(jsonData); // perform the async POST
}
我認為這是在發生某些事情時運行的傳統回調。 這里在收到響應時執行。
不過,我想嘗試另一種方法,比如使用 Futures/Promises 或 async/await。
是否可以將此示例轉換為瀏覽器中的任何這些替代方案?
如果是這樣,您能否展示示例在作為 Future 或 async/await 實現時的外觀?
我同意@Pacane 關於使用http包的看法。 它提供了一個更清晰的 API 來處理http
請求,讓您可以輕松地使用 async/await。
但是,您可以saveData
使用核心庫編寫saveData
,如下所示(此處為 dartpad 示例: https ://dartpad.dartlang.org/2ed9e39fd887b58532d42a70697ce9cd)
Future<Null> saveData() async {
var response = await HttpRequest.postFormData(
'http://127.0.0.1:8080/programming-languages',
{'language': 'Dart'});
print(response.responseText);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.