当前位置: 首页 > news >正文

手写Promise

function MyPromise(executor) {​// 初始化Promise的状态和结果
​  this._state = 'pending';
​  this._value = undefined;​​// 回调函数数组,用于存储成功和失败回调
​  this._callbacks = [];​​// 定义resolve函数,用于将Promise状态从pending变为fulfilledconst resolve = (value) => {​if (this._state === 'pending') {
​      this._state = 'fulfilled';
​      this._value = value;​this._callbacks.forEach(callback => {
​        callback.onFulfilled(value);​});​}
​  };
​​  // 定义reject函数,用于将Promise状态从pending变为rejected
​  const reject = (reason) => {
​    if (this._state === 'pending') {​this._state = 'rejected';
​      this._value = reason;this._callbacks.forEach(callback => {callback.onRejected(reason);​});​}
​  };
​​  // 执行executor函数,传入resolve和reject作为参数​try {​executor(resolve, reject);
​  } catch (error) {
​    reject(error);​}​}
MyPromise.prototype.then = function (onFulfilled, onRejected) {
​  if (this._state === 'fulfilled') {​onFulfilled(this._value);
​  } else if (this._state === 'rejected') {​onRejected(this._value);
​  } else if (this._state === 'pending') {​this._callbacks.push({​onFulfilled,​onRejected,​});​}​};​​
​​// 示例用法​
const promise = new MyPromise((resolve, reject) => {
​  setTimeout(() => {​    resolve("成功!");​  }, 1000);
​});
​​promise.then(​(result) => {​console.log("成功:" + result);​},
​  (error) => {
​    console.log("失败:" + error);
​  }​);​​​
http://www.hskmm.com/?act=detail&tid=28755

相关文章:

  • 双列集合
  • 二项式反演
  • 2025 权威推荐!净化铝型材品牌 TOP5 排行榜:实力厂家精选,品质之选不容错过
  • 关于HashMap
  • sar(System Activity Reporter 系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一。
  • 车辆主动悬架线性最优控制(LQR)系统
  • 2025环保/植物/净醛/健康/无味腻子粉厂家推荐榜:专注多场景墙面基底解决方案供应!
  • 2025 泰国立体/高位/仓储/托盘/重型/流利式/贯通式/穿梭车/模具货架厂家推荐排行榜:聚焦多场景存储需求,精选优质供应商!
  • 2025 工控/核心板/工业/嵌入式主板板卡厂家推荐排行榜:聚焦多领域智能硬件核心供应!
  • 计划任务在不管用户是否登录都要运行时,bat不能正常运行处理办法
  • 2025 高压/高压空气/氦气/氩气压缩机厂家推荐榜:聚焦多场景压缩空气解决方案!
  • 2025 温室/蔬菜/花卉/单栋/玻璃温室/连栋/连栋膜温室/薄膜/塑料/钢架大棚厂家推荐榜:聚焦多场景种植需求,提供专业设施解决方案!
  • Delta并联机器人正逆解实现
  • SQL查询,直接生成json结果
  • 2025 MVR/三效/多效/结晶/废水/降膜蒸发器厂家口碑推荐榜:聚焦多行业废水处理与物料浓缩解决方案!
  • mindie开启DeepSeek的128K
  • MATLAB的无刷直流电机转速电流双闭环仿真实现
  • AI设计软件/工具/品牌/方案/大模型/开源模型/平台/小程序/插件公司推荐:专注多场景智能设计解决方案供应!
  • STM32环境配备keil5【保姆级】
  • 微波雷达模块让广告灯告别无效展示
  • 2025七水硫酸锌供货厂家最新推荐榜:品质稳定与高效服务的优
  • 从 1 到 1000:MyEMS 社区如何用开源力量搭建中小企业的 “零碳工具箱”?
  • 为什么你的项目总是延期?90%的团队忽略了这5个预警信号
  • 变量、常量和作用域
  • 用python定义类时,用子类继承父类,当父类需要从子类中传递很多形参时,该怎么处理
  • 量化(一)
  • 2025 年试验箱厂商最新推荐排行榜:涵盖高低温 / 恒温恒湿 / 冷热冲击等设备,精选研发实力强、质量管控严的优质企业
  • 2025 最新化粪池生产厂家推荐排行榜:聚焦老牌标杆与新锐力量,预制 / 玻璃钢品类权威甄选钢筋混凝土/一体/成品/拼装式化粪池厂家推荐
  • MyEMS + 边缘网关:偏远基站如何实现 “无人值守” 下的精准能耗管理?
  • 2025 云栖精选资料:《从云原生到 AI 原生核心技术与最佳实践》PPT 免费下载