Не отменено Будущее - PullRequest
       7

Не отменено Будущее

0 голосов
/ 12 декабря 2018

Я пытаюсь отменить Future, но все еще получаю код выполнения в .then ().Почему не работает и что я делаю не так?

var c = CancelableOperation.fromFuture(
     Future.delayed(new Duration(seconds: 5), () {

     }).then((data){
       print("123"); // This code is always called...
     })

 );
 c.cancel();

1 Ответ

0 голосов
/ 12 декабря 2018

https://pub.dartlang.org/packages/async

Класс CancelableOperation определяет операцию, которая может быть отменена его потребителем.Затем продюсер может прослушать эту отмену и прекратить производить будущее, когда оно получено.Он может быть создан с использованием CancelableCompleter.

В особенности эта часть

Затем продюсер может прослушать эту отмену и прекратить производство

Таким образом, производитель стоимости должен прекратить делать работу.Это не значит, что это не вернет результат.Возможно, он вернет null, чтобы указать, что это не фактический результат.

Вместо этого, вероятно, вам понадобится CancelableCompleter.

Модульные тесты могут быть полезны для понимания того, как эти классы предполагаютсябудет использоваться

https://github.com/dart-lang/async/blob/1106a5bfee1472905711da7a78dcd413ba2f6dcf/test/cancelable_operation_test.dart#L93-L134 (а также другие файлы в этом файле)

...