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

相关推荐
见山是山-见水是水1 天前
鸿蒙flutter第三方库适配 - 读书笔记
flutter·华为·harmonyos
Utopia^1 天前
鸿蒙flutter第三方库适配 - 图片压缩工具
flutter·华为·harmonyos
小李子呢02111 天前
前端八股CSS(2)---动画的实现方式
前端·javascript
GreenTea1 天前
从 Claw-Code 看 AI 驱动的大型项目开发:2 人 + 10 个自治 Agent 如何产出 48K 行 Rust 代码
前端·人工智能·后端
见山是山-见水是水1 天前
鸿蒙flutter第三方库适配 - 车辆管理
flutter·华为·harmonyos
渣渣xiong1 天前
从零开始:前端转型AI agent直到就业第五天-第十一天
前端·人工智能
布局呆星1 天前
Vue3 | 组件通信学习小结
前端·vue.js
C澒1 天前
IntelliPro 企业级产研协作平台:前端智能生产模块设计与落地
前端·ai编程
Utopia^1 天前
鸿蒙flutter第三方库适配 - 番茄钟专注
flutter·华为·harmonyos