首页 > 其他分享 >手写promise核心代码(一)

手写promise核心代码(一)

时间:2023-09-21 15:59:12浏览次数:25  
标签:status 代码 value myPromise promise reject 手写 pending

 

class myPromise {
static PENDING = 'pending'
static REJECT = 'reject'

static RESOLVE = 'resolve';

constructor(executor) {
this.value = null
this.status = myPromise.PENDING
try {
executor(this.resolve1.bind(this), this.reject.bind(this))
} catch (error) {
// 代码执行出错也reject
this.reject(error)
}
// 目前到这里就会有this 指向的问题, 因为到类实例化调用的时候,都是在window下,
//或者在某一个函数内,此时this 指向window ,严格模式下,class 类都是undefined
// 所以这里需要手动绑定this
}

resolve1(value) {
// mmp 原来 class 里面 resolve 已经是个关键字了, 怎么说开始都不起resolve作用

if (this.status == 'pending') { //promise 状态只允许改变一次,所以不是pending 状态都不给改
this.value = value
this.status = myPromise.RESOLVE
}

}
reject(reason) {
if (this.status == 'pending') {
this.value = reason
this.status = myPromise.REJECT
}
}
}

 

到目前位置,就实现了 状态改变这一部分

标签:status,代码,value,myPromise,promise,reject,手写,pending
From: https://www.cnblogs.com/Hijacku/p/17720111.html

相关文章

  • 某软件上市企业:源代码审核保障数字安全,推动软件产业高质量发展
    某软件公司是大型高科技上市企业,也是国家软件百强企业,承担了大量国家重点项目,客户群体遍及各个领域。该软件企业精研数字化,推动政府、企业实现高效化、便捷化、精准化的业务发展。源代码审核解决安全风险,助力交付安全可靠的产品该软件公司研发的“某平台”软件系统属于一款给某系统......
  • git 查看代码行数
    统计当前项目代码行数gitls-files|xargscat|wc-l细分每个文件的代码行数,相当于把上面命令细化:gitls-files|xargswc-l  【git】Git指令统计代码行数_git统计代码行数_bandaoyu的博客-CSDN博客如何用git查看代码行数_笔记大全_设计学院(python100.com)......
  • EF Core 迁移代码
    列重命名需要自定义迁移的一个重要示例就是重命名属性时。例如,如果你将属性从 Name 重命名为 FullName,EFCore将生成以下迁移:migrationBuilder.DropColumn(name:"Name",table:"Customers");migrationBuilder.AddColumn<string>(name:"FullName",......
  • 代码随想录算法训练营-贪心算法-5|56. 合并区间、738. 单调递增的数字、968. 监控二叉
    56. 合并区间时间复杂度:O(nlogn)空间复杂度:O(logn),排序需要的空间开销1classSolution:2defmerge(self,intervals):3result=[]4iflen(intervals)==0:5returnresult#区间集合为空直接返回67int......
  • 记录 umi4 ant design pro typescript 在 vscode 代码提示错误的问题
    原因是vscode使用的ts版本与项目不匹配。修复方法:在vscode拓展【左侧4个方框的图标】搜索typescript下载安装插件JavaScriptandTypeScriptNightly然后使用ctrl+shift+p调出命令,使用SelectTypeScriptversion命令选择项目应用的typescript版本。选择使用工作区版......
  • firefox浏览shtml时直接显示源代码问题
    firefox浏览shtml时直接显示源代码问题今天浏览网页时,打开一个网页http://photo.17ok.com/,发现直接显示了源代码,随之把页面补全,.php.html.htm都试过但都提示servernotfound,最后输入shtml,又一次出来了源代码。那么确定此页面属于.shtml页面。用IE浏览器打开,正常,无奈了,初步......
  • windows下进程注入的各种技术汇总、代码示例和检测思考
    注入类型                 C++代码实现链接和检测思考         检测优先级           备注PortableExecutableInjection-PE注入 https://www.cnblogs.com/bonelee/p/17719649.html 高 已实现检测,核......
  • HNU 结对编程 对队友代码的分析 中小学数学卷子自动生成程序
    基本功能实现一、主要内容认真学习和阅读同伴的代码,分析优劣。二、题目要求个人项目:中小学数学卷子自动生成程序用户:小学、初中和高中数学老师。功能:1、命令行输入用户名和密码,两者之间用空格隔开(程序预设小学、初中和高中各三个账号,具体见附表),如果用户名和密码都正确,将根......
  • PyCharm配置autopep8(自动格式化Python代码)
    PyCharm配置autopep8(自动格式化Python代码) 1.关于PEP8PEP8,StyleGuideforPython Code,是Python官方推出编码约定,主要是为了保证 Python 编码的风格一致,提高代码的可读性。官网地址:https://www.python.org/dev/peps/pep-0008/2.关于Autopep8Autopep8是自......
  • [代码随想录]Day50-单调栈part01
    题目:思路:要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了维护一个栈顶->栈底由小到大的栈;这样在之后(右侧)遇到更大的数时,就可以得到所有在他前面并且比他小的数,就能获得结果。初始化默认为0;代码:funcdailyTemperatures(n......