Принцип водопада в библиотеке дротиков, такой как асинхронность от Колана

Ранее я был программистом javascript и использовал библиотеку async от caolan, чтобы предотвратить асинхронную библиотеку ада обратного вызова.

В эти дни я перешел на дартс, и стиль асинхронности почти такой же, как в javascript. Мне очень нравится функция async.waterfall, которая позволяет выполнять функции с обратным вызовом по порядку.

Как я могу сделать это в дартс? У них есть подобная библиотека в дартс?

2 ответа

Решение

Вы можете просто связать результаты фьючерсов вместе:

import 'dart:async';

void main() {
 first()
  .then(second)
  .then(third)
  .then(fourth);
}

Future<String> first() {
  return new Future.sync(() => "first");
}

Future<int> second(String arg ) {
  return new Future.sync(() => 2);
}

Future<List<int>> third(int arg) {
  return new Future.sync(() => [1, 2, 3]);
}

Future<String> fourth(List<int> arg ) {
  return new Future.sync(() => "Final result is: $arg");
}
Другие вопросы по тегам