//首先创建一个promise 类const STATUS = { PENDING :'pending', FULFILLD:'fufilled', REJECTED:'rejected',};class Lpromise{ status = STATUS.PENDING; resloves = []; //用于then 中的回调函数存储,以便在resloves 时执行 rejects = []; reslove = (value) => { //改变状态 // 保存值 //触发回调 const {resloves} = this; if(this.status !== STATUS.PENDING) return; this.status = STATUS.FULFILLD; console.log(this); while (resloves.length){ const resloveFn = resloves.shift();//数组中取出第一个值 resloveFn(value); console.log( "🚀 ~ file: HePromise.html:27 ~ HePromise ~ newVal:", value ); } }; reject = (value) => { //改变状态 // 保存值 //触发回调 const {rejects} = this; if(this.status !== STATUS.PENDING) return; this.status = STATUS.REJECTED; console.log(this); while (rejects.length){ const rejectFn = rejects.shift();//数组中取出第一个值 rejectFn(value); console.log("🚀 ~ file: HePromise.html:27 ~ HePromise ~ newVal:",rejectFn); } }; constructor(executor){ executor(this.reslove,this.reject); } then(resloveFn,rejectFn){ this.resloves.push(resloveFn);//存储数据到resloves上 rejectFn && this.rejects.push(rejectFn); console.log("then"); return this; } catch(){ console.log("catch"); this.rejects.push(rejectFn) } finally(){ console.log("finally") }}// Lpromise 构造函数 传入一个回调const lpromise = new Lpromise((reslove,reject) => { setTimeout(()=>{ reslove("hello world") },1000)});lpromise.then((res) =>{ console.log("11"); return "res" + res;}).then((res)=>{ console.log(res + "111")});