实现一下手写Promise

实现一个简易版 Promise

const PENDINGS='pending'
const RESOLVEDS='resolved'
cosnt REJECTED='rejected'
	function promise(fn){
		const _this=this;
		_this.state=PENDINGS
		_this.vaule=null
	    _this.resolvedCallbacks = []
 	    _this.rejectedCallbacks = []
 	    //还没有完善代码
 	    //在这里创建了三个常量用于表示状态
 	    //因为函数可能会异步执行,所以先使用中间变量获取this对象
 	    //1.pending 2.vaule用于保存resolve 或者reject中传入的值
 	    //resolvedCallbacks 和 rejectedCallbacks 用于保存 then 中的回调函数

		//在这里开始完善代码
		function resolve(value) {
		  if (_this.state === PENDING) {
		    _this.state = RESOLVED
		    _this.value = value
		    _this.resolvedCallbacks.map(cb => 					cb(_this.value))
		  }
		}

	function reject(value) {
	  if (_this.state === PENDING) {
	    _this.state = REJECTED
	    _this.value = value
	    _this.rejectedCallbacks.map(cb => cb(_this.value))
	  }
		}
		}
	//完成以上两个函数以后,我们就该实现如何执行 Promise 中传入的函数了
	try {
	  fn(resolve, reject)
	} catch (e) {
	  reject(e)
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值