分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

js手写'Promise'

发布时间:2023-09-06 02:14责任编辑:苏小强关键词:js
/* * pending:初始化成功 * fulfilled:成功 * rejected:失败 * */function Promise(executor) {// 执行器 ???this.status = ‘pending‘; ???this.value = undefined; ???this.reason = undefined; ???this.fulfilledCallback = []; ???this.rejectCallback = []; ???let resolve = (value)=>{ ???????if(this.status==‘pending‘){ ???????????this.status = ‘resolve‘; ???????????this.value = value; ???????????this.fulfilledCallback.forEach(fn=>fn()) ???????} ???}; ???let reject = (reason)=>{ ???????if(this.status ==‘pending‘){ ???????????this.status = ‘reject‘; ???????????this.reason = reason; ???????????this.rejectCallback.forEach(fn=>fn()) ???????} ???}; ???try{ ???????executor(resolve,reject) ???}catch(e){ ???????reject(e) ???}}Promise.prototype.then = function (onfulfilled,onrejected) { ???if(this.status == ‘resolve‘){ ???????onfulfilled(this.value) ???} ???if(this.status == ‘reject‘){ ???????onrejected(this.reason) ???} ???if(this.status == ‘pending‘){ ???????this.fulfilledCallback.push(()=>{ ???????????onfulfilled(this.value) ???????}); ???????this.rejectCallback.push(()=>{ ???????????onrejected(this.reason) ???????}) ???}};var a = new Promise((resolve,reject)=>{ ???setTimeout(()=>{ ???????resolve(10) ???})});a.then((res)=>{ ???console.log(res);});

js手写'Promise'

原文地址:https://www.cnblogs.com/wumi/p/9614962.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved