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

相关推荐
小风呼呼吹儿几秒前
Flutter 框架跨平台鸿蒙开发 - 种子发芽记录器:记录植物成长的每一刻
android·flutter·华为·harmonyos
一人の梅雨6 分钟前
中国制造网商品详情接口进阶实战:跨境场景下的差异化适配与问题攻坚
java·前端·javascript
无知的小菜鸡11 分钟前
React:使用高阶组件实现vue中的路由守卫功能
前端·vue.js·react.js
xzl0411 分钟前
小智服务器intent_type 初始化为function_call过程
linux·前端·数据库
wuhen_n16 分钟前
Webpack vs Vite:前端构建工具对比
前端·webpack·node.js·vite
EverydayJoy^v^16 分钟前
RH134学习进程——四.归档和传输文件
服务器·前端·网络
Miguo94well20 分钟前
Flutter框架跨平台鸿蒙开发——学茶知识APP开发流程
flutter·华为·harmonyos·鸿蒙
muddjsv23 分钟前
JavaScript 结合 Flex 布局的深度解析 (解锁前端布局新范式)
前端·javascript
卿着飞翔25 分钟前
win11安装配置nginx并部署ruoyi前端
运维·前端·nginx
jiayong2325 分钟前
前端性能优化系列(一):问题分析与诊断
前端·性能优化