实现简单 promise

Posted auserroot

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现简单 promise相关的知识,希望对你有一定的参考价值。

实现简单 promise

分析:
premise 有三个状态:pending、fulfilled、rejected
一个成功回调: resolve
一个失败回调: reject
函数:
premise 是一个对象
变量:
定义三个变量分别用于保存 状态、成功结果、失败结果
实现:

 function  _promise(constructor)
   let that = this //保存this
   //定义 变量
   that.status = 'pending' //定义初始状态 为 pending
   that.value= undefind //初始化 成功回调结果
   that.reason = undefind //初始化 失败回调结果
   
   //定义 成功回调
   const resolve =(value)=>
   	//判断 状态
   	that.status === 'pending' && (that.status = 'fulfilled',that.value= value)
   
   //定义 失败回调
   const reject=(reason )=>
   	//判断 状态
   	that.status === 'pending' && (that.status = 'rejected',that.reason = reason )
   
   
   // 异常捕获
   try
   	constructor(resolve,reject) //实现构造器 传入回调
   catch(error)
   	reject(error)
   



//实现 .then 方法
_promise.prototype.then =function(onFulfilled,onRejected)
	let that = this ;
	//方法类型判断
	onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : value => value;
	onRejected = typeof onRejected ==='function' ? onRejected : reason =>throw reason;//抛出异常
 	that.status === 'fulfilled' && onFulfilled(that.res);  //成功状态 执行  onFulfilled方法
	that.status === 'rejected' && onRejected(that.reason); //失败状态 执行onRejected方法



//测试
// let o = new _promise((resolve,reject)=>
//   resolve(1);

//   reject(2);
// )
// o.then((a)=>console.log(a))

promise/A规范

以上是关于实现简单 promise的主要内容,如果未能解决你的问题,请参考以下文章

实现简单 promise

Promise 原理探究及其简单实现

实现简单 promise

简单实现异步编程promise模式

ES6 promise简单实现

Promise的实现