簡體   English   中英

我可以在瀏覽器中使用 Dart async/await 發送請求嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM