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

相关推荐
星火开发设计21 小时前
模板参数:类型参数与非类型参数的区别
java·开发语言·前端·数据库·c++·算法
空白诗21 小时前
基础入门 Flutter for OpenHarmony:ClipRRect 圆角裁剪组件详解
flutter
键盘鼓手苏苏21 小时前
Flutter for OpenHarmony 实战:just_audio 音乐播放器深度适配与进阶
flutter
松叶似针1 天前
Flutter三方库适配OpenHarmony【secure_application】— FlutterPlugin 接口实现与注册
flutter
cc.ChenLy1 天前
【CSS进阶】毛玻璃效果与代码解析
前端·javascript·css
何中应1 天前
使用Jenkins部署前端项目(Vue)
前端·vue.js·jenkins
空白诗1 天前
基础入门 Flutter for OpenHarmony:Positioned 定位组件详解
flutter
3秒一个大1 天前
JWT 登录:原理剖析与实战应用
前端·http·代码规范
NEXT061 天前
2026 技术风向:为什么在 AI 时代,PostgreSQL 彻底成为了全栈工程师的首选数据库
前端·数据库·ai编程
松叶似针1 天前
Flutter三方库适配OpenHarmony【secure_application】— iOS 端原生模糊遮罩实现分析
flutter·ios·cocoa