首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在浏览器中使用Dart异步/等待post请求?

是否可以在浏览器中使用Dart异步/等待post请求?
EN

Stack Overflow用户
提问于 2017-02-05 23:24:42
回答 1查看 716关注 0票数 2

我使用这个示例https://webdev.dartlang.org/articles/get-data/json-web-service作为起点来开发使用API端点数据的Dart应用程序:

代码语言:javascript
复制
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实现时的样子吗?

EN

回答 1

Stack Overflow用户

发布于 2017-02-07 02:25:39

我同意@Pacane关于使用http包的观点。它为处理http请求提供了一个干净得多的应用程序接口,允许您轻松使用async/await。

但是,您可以只使用核心库编写saveData,如下所示(dartpad示例在这里:https://dartpad.dartlang.org/2ed9e39fd887b58532d42a70697ce9cd)

代码语言:javascript
复制
Future<Null> saveData() async {
  var response = await HttpRequest.postFormData(
      'http://127.0.0.1:8080/programming-languages',
      {'language': 'Dart'});
  print(response.responseText);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42053734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档