实现一个Promise之基础、异步
来源:     阅读:416
云上智慧
发布于 2020-04-24 19:23
查看主页

其实跟着promise a+一步一步,按照顺序实现一个promise并不难,今天先实现最简单的promise和异步resolve。原本想一律一次性写完,想想还是分开走,希望想学的可以敲几遍。

//promise三个状态const PENDING = 'PENDING';const FULFILLED = 'FULFILLED';const REJECTED = 'REJECTED';class Promise { constructor(executor){  //状态  this.state = PENDING;  //成功值 失败值 默认undefined  this.value = undefined;  this.reason = undefined;  //简易发布订阅,实例可以then屡次,用数组  this.onResolvedCallbacks = [];  this.onRejectedCallbacks = [];    //成功方法  let resolve = (value) => {   if(this.state === PENDING){    this.state = FULFILLED;    this.value = value;    this.onResolvedCallbacks.forEach(fn => fn());   }  };    //失败方法  let reject = (reason) => {   if(this.state === PENDING){    this.state = REJECTED;    this.reason = reason;    this.onRejectedCallbacks.forEach(fn => fn());   }  };    //立即执行,假如有错误直接执行失败方法  try{   executor(resolve, reject);  }catch (e) {   reject(e);  } } //then方法,一个成功函数,一个失败函数 then(onFulfilled, onRejected){  //假如成功,执行成功函数  if(this.state === FULFILLED){   onFulfilled(this.value);  };    //假如失败,执行失败函数  if(this.state === REJECTED){   onRejected(this.reason);  };    //假如有异步,订阅成功失败函数  if(this.state === PENDING){   this.onResolvedCallbacks.push(() => {    onFulfilled(this.value);   });      this.onRejectedCallbacks.push(() => {    onRejected(this.reason);   });  }; }}

最简单的实现,可以了解了解。

image
免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 系统环境 服务器应用
相关推荐
Java中的ThreadPoolExecutor线程池
阿里云创立密钥对详细步骤
程序员吐槽自己经历,花4万学学习编程,工资却只有5千,倒霉啊
前台知识体系6.小程序
CocosCreator加入红点系统
首页
搜索
订单
购物车
我的