flutter 中实现前端的promise

代码如下

Dart 复制代码
typedef Callback = Function(
  Function([dynamic value]) resolve,
  Function(Exception error) reject,
);

class Promise {
  Promise();
  static Future<T?> run<T>([
    Callback? callback,
  ]) async {
    final completer = Completer<T>();
    //
    resolve([value]) {
      return completer.complete(value);
    }

    //
    reject(Exception exception) {
      completer.completeError(exception);
    }

    if (callback != null) {
      await callback(resolve, reject);
    } else {
      completer.complete();
    }
    return completer.future;
  }

  static Future<T?> resolve<T>([T? value]) async {
    await Future.delayed(Duration.zero);
    return value;
  }

  static Future<T> reject<T extends Exception>(T value) async {
    await Future.delayed(Duration.zero);
    throw value;
  }
}

使用方法

Dart 复制代码
 final promise = Promise.run((resolve, reject) {
      resolve("finally");
    });

核心原理是

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

组合一下 就是前端的promise

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

相关推荐
mCell10 小时前
GSAP ScrollTrigger 详解
前端·javascript·动效
gnip10 小时前
Node.js 子进程:child_process
前端·javascript
excel13 小时前
为什么在 Three.js 中平面能产生“起伏效果”?
前端
excel14 小时前
Node.js 断言与测试框架示例对比
前端
天蓝色的鱼鱼16 小时前
前端开发者的组件设计之痛:为什么我的组件总是难以维护?
前端·react.js
codingandsleeping16 小时前
使用orval自动拉取swagger文档并生成ts接口
前端·javascript
石金龙17 小时前
[译] Composition in CSS
前端·css
BG17 小时前
Flutter 简仿Excel表格组件介绍
flutter
白水清风17 小时前
微前端学习记录(qiankun、wujie、micro-app)
前端·javascript·前端工程化
Ticnix17 小时前
函数封装实现Echarts多表渲染/叠加渲染
前端·echarts