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

相关推荐
红色乌鸦几秒前
vue3+ts 中使用pinia状态管理
前端
Dgua3 分钟前
一文吃透Vue Diff原理:从核心逻辑到实战避坑
前端·vue.js
小飞侠在吗5 分钟前
vue Hooks
前端·javascript·vue.js
赵财猫._.5 分钟前
【Flutter x 鸿蒙】第八篇:打包发布、应用上架与运营监控
flutter·华为·harmonyos
龙亘川6 分钟前
开箱即用的智慧城市一网统管 AI 平台——项目目录结构及前端结构(7-9)
前端·人工智能·智慧城市
小白|9 分钟前
【OpenHarmony × Flutter】混合开发核心难题:如何精准同步 Stage 模型与 Flutter 页面的生命周期?(附完整解决方案)
flutter
多多15310 分钟前
基于大模型的文档自动化测试用户提交文件进行文档测试
前端
张风捷特烈10 分钟前
Flutter TolyUI 框架#11 | 标签 tolyui_tag
前端·flutter·ui kit
晚霞的不甘11 分钟前
[鸿蒙2025领航者闯关]: Flutter + OpenHarmony 安全开发实战:从数据加密到权限管控的全链路防护
安全·flutter·harmonyos
松☆11 分钟前
创建混合工程:OpenHarmony Stage 模型 + Flutter 模块标准结构详解
flutter