当前位置:   article > 正文

flutter 中实现前端的promise_flutter promise

flutter promise

代码如下

  1. typedef Callback = Function(
  2. Function([dynamic value]) resolve,
  3. Function(Exception error) reject,
  4. );
  5. class Promise {
  6. Promise();
  7. static Future<T?> run<T>([
  8. Callback? callback,
  9. ]) async {
  10. final completer = Completer<T>();
  11. //
  12. resolve([value]) {
  13. return completer.complete(value);
  14. }
  15. //
  16. reject(Exception exception) {
  17. completer.completeError(exception);
  18. }
  19. if (callback != null) {
  20. await callback(resolve, reject);
  21. } else {
  22. completer.complete();
  23. }
  24. return completer.future;
  25. }
  26. static Future<T?> resolve<T>([T? value]) async {
  27. await Future.delayed(Duration.zero);
  28. return value;
  29. }
  30. static Future<T> reject<T extends Exception>(T value) async {
  31. await Future.delayed(Duration.zero);
  32. throw value;
  33. }
  34. }

使用方法

  1. final promise = Promise.run((resolve, reject) {
  2. resolve("finally");
  3. });

核心原理是

利用Future  和Completer。 Future 是异步无状态的 Completer可以返回Future 里面有3种状态

组合一下 就是前端的promise 

用法改了一下 使用 Promise.run   =》Promise

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号