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

相关推荐
雪碧聊技术2 小时前
前端项目代码发生改变,如何重新部署到linux服务器?
前端·vue3·centos7·代码更新,重新部署
爱吃大芒果2 小时前
GitCode口袋工具的部署运行教程
flutter·华为·harmonyos·gitcode
爱吃大芒果2 小时前
Flutter基础入门与核心能力构建——Widget、State与BuildContext核心解析
flutter·华为·harmonyos
liulilittle2 小时前
C++ 浮点数封装。
linux·服务器·开发语言·前端·网络·数据库·c++
wordbaby2 小时前
Expo 进阶指南:赋予 TanStack Query “原生感知力” —— 深度解析 AppState 与 NetInfo
前端·react native
Moment3 小时前
从美团全栈化看 AI 冲击:前端转全栈,是自救还是必然 🤔🤔🤔
前端·后端·面试
天问一3 小时前
使用 Vue Router 进行路由定制和调用的示例
前端·javascript·vue.js
韩立学长4 小时前
【开题答辩实录分享】以《基于Vue的非遗文化知识分享平台的设计与实现》为例进行选题答辩实录分享
前端·javascript·vue.js
优弧4 小时前
离开舒适区100天,我后悔了吗?
前端·后端·面试
胡gh4 小时前
css的臂膀,前端动效的利器,还是布局的“隐形陷阱”?
前端·css·html