2017-02-05 12 views
2

Я использую этот пример https://webdev.dartlang.org/articles/get-data/json-web-service в качестве отправной точки для разработки Dart приложения потребляя данных API конечных точек:Могу я использовать Dart async/ждать сообщений в браузере?

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.

Можно ли включить этот пример в любой из этих альтернатив в браузере?

Если да, можете ли вы показать пример, как он выглядит при реализации как Будущее или асинхронный/ждущий?

+1

Заканчивать пакет 'http', он имеет приятный интерфейс API с использованием фьючерсов и потоков. – Pacane

ответ

2

Я согласен с @Pacane об использовании пакета http. Он предоставляет намного более чистый API для работы с http запросами, которые позволяют вам легко использовать async/wait.

Однако, вы можете написать 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); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^