Promise实现

本文介绍了一种手动实现Promise的方法,通过构造函数和原型方法完成状态管理及回调处理,示例展示了如何使用自定义Promise进行异步操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现Promise功能

代码如下:

var selfPromise = (function() {
	function Promise(fn) {
		this.callbacks = [];
		fn(this.resolve.bind(this),this.reject.bind(this));
	}

	Promise.prototype = {
		constructor: Promise,
		resolve: function(result) {
			this.complete('resolve', result);
		},

		reject: function(result) {
			this.complete('reject', result);
		},

		complete: function(type, result) {
			while (this.callbacks[0]) {
				this.callbacks.shift()[type](result);
			}
		},

		then: function(successHandler, failedHandler) {
			this.callbacks.push({
				resolve: successHandler|| function(){},
				reject: failedHandler|| function(){}
			});

			return this;
		}
	};
	return Promise;
})();

示例:

var promise = new selfPromise(function(resolve,reject){
    setTimeout(function(){
        resolve('object');
    },1000);
});

promise.then(function(res){
    console.log(res);
});

//一秒后输出 object
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值