promise是一个对象
构造函数接受一个参数
参数是一个执行函数 这个函数有俩个参数 俩个参数也都是函数
这很奇怪 说一个对象 然后对象的执行函数就开始执行
就好比先声明 MyClass AAA
然后只需要写AAA就会执行乱七八糟的代码
GPT说创建promise对象的时候 他的执行函数就会被调用
确实是的 即使执行函数的参数myResolve, myReject还没有被赋值
执行函数的内容雀食被执行了
即使执行函数没有复制调用的时候也不会报错 而是当作没发生继续执行下面的
很奇妙的是 即使执行函数内部 resolve写在其他代码前面 结果依然是先执行别的后执行resolve
这语言太傻逼了
Then是注册回调函数 也就是执行函数里的俩个参数吧
原来是执行函数的第一个参数方法被调用了所以状态变化了
看来调用执行函数的参数里面的方法就会发生状态变化
也就是说执行函数的参数 用这个 并不是真的用 而是改变状态?
我又仔细看了一下 看来并不是resolve那种没有执行
resolve前后的代码都有执行到 就是确实是执行了
但执行没有任何效果就是设置了promise的状态
太傻逼了 我不能设置断点调试吗
哦可以
还是傻逼 看不到promise对象的属性
真逆天执行函数执行的时候resolve从来没有被声明过 但居然真的能执行 还能改promise的状态啊?
可以分析了 函数名字不重要 执行函数的第一个参数 就是resolve函数
调用这个就能设置成状态成功
第二个函数就是设置成状态失败
如果调用then的时候 执行函数跑完了 就会用成功的注册函数去执行
参数就是执行函数调用第一个函数的那个时候的样子
欸那我可以不加参数吗?
就是故意执行函数调用和实际的注册函数参数不一致’
简直离谱居然还能执行 可以传俩个参数 但只能接受一个就是了
就是promise调用then 如果是完成状态 就会执行注册的方法 参数就是原本执行函数里给resolve方法调用的时候的样子 但离谱只能收一个参数
不是fullfilled就等到pending完成了再执行吧
然后我再去看哪个achyro是三小
把return “hello”
变成了 Promise.resolve(“Hello”)
就是返回一个字符串 变成返回一个promise 而且这个promise是已经fullfilled
模拟出执行函数调用成功函数 同时用”hellow”调用成功函数
也就是有一个已经fullfilled的promise 而且他的执行函数还传递了”hello”来调用的这个promise
async function myFunction() {
return Promise.resolve(“Hello”);}
myFunction().then(
function(value) { /* 成功时的代码 / }, function(error) { / 出错时的代码 */ });
所以就变成了一个执行函数是直接传递hello给成功方法的promise
然后给他注册成功的方法 因为已经成功状态 所以立刻执行
失败方法还能省略不写