0


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

标签: flutter 前端

本文转载自: https://blog.csdn.net/weixin_43575775/article/details/136009232
版权归原作者 肥肥呀呀呀 所有, 如有侵权,请联系我们删除。

“flutter 中实现前端的promise”的评论:

还没有评论