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

相关推荐
Aliex_git5 分钟前
gzip 压缩实践笔记
前端·网络·笔记·学习
木昆子5 分钟前
实战A2UI:从JSON到像素——深入Lit渲染引擎
前端·人工智能
an317429 分钟前
React 页面加载埋点的正确姿势:useEffect 与 document.readyState 完美配合
前端·javascript·react.js
lqj_本人28 分钟前
Flutter三方库适配OpenHarmony【apple_product_name】库简介与功能概述
flutter
1024小神29 分钟前
vue3项目配置了子路由后刷新页面回到首页解决办法
前端·javascript·vue.js
_Rookie._1 小时前
npm run 的原理
前端·npm·node.js
木斯佳1 小时前
前端八股文面经大全:2026-01-13MiniMax前端实习二面面经深度解析
前端·状态模式
远离UE41 小时前
Blender模型正常导入UE5 FBX 轴向匹配
前端
谭光志1 小时前
OpenClaw 安装与运行教程
前端·后端·ai编程
sdff113961 小时前
【HarmonyOS】Flutter实战项目+校园通服务平台全解
flutter·华为·harmonyos