2017-02-05 8 views
2

私はAPIエンドポイントのデータを消費ダートアプリを開発するための出発点として、この例https://webdev.dartlang.org/articles/get-data/json-web-serviceを使用しています:ブラウザでポストリクエストにDart async/awaitを使用できますか?

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として実装されたときの見た目を表示してもよろしいですか?

+1

パッケージをチェックアウト 'http'、それが先物やStreamsを使用して素敵なAPIを持っています。 – Pacane

答えて

2

httpパッケージを使用した場合、@Pacaneと同意します。 httpリクエストを処理するためのより洗練されたAPIを提供しており、async/awaitを簡単に使用できます。

(ここではdartpadサンプル:https://dartpad.dartlang.org/2ed9e39fd887b58532d42a70697ce9cd)を次のようにしかし、あなただけのコアライブラリを使用してsaveDataを書くことができ

Future<Null> saveData() async { 
    var response = await HttpRequest.postFormData(
     'http://127.0.0.1:8080/programming-languages', 
     {'language': 'Dart'}); 
    print(response.responseText); 
} 
関連する問題