实现简单 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的主要内容,如果未能解决你的问题,请参考以下文章