Promsie.resolve(promise对象)为什么then中val是普通值?
问题描述:
如上图所示,给Promsie.resolve传递一个promise对象结果返回的是1,而不是一个promise对象这是为什么?
通过我对Promise源码的理解,它底层then实现是 如果then里的回调函数返回时一个promise对象,那么他会深度递归调用这个promise的then方法,直到为一个普通值,在使用new Promise 包裹返回这个普通值
如果是 promise.resolve(promise).then().then(val => console.log(val)) 返回普通值我可以理解,因为第二个then已经将返回值promise转为普通值了, 可能少一层我就不理解了。
希望大佬们,可以指点一下,谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Promise.resolve(value)方法返回一个以给定值解析后的Promise对象。如果这个值是一个 promise ,那么将返回这个 promise
这是相关资料
Promise.reslove() 源码,有判断。见:Promise 源码
输出
then
方法返回一个Promise对象,可以继续链式调用then方法,传入的函数在Promise对象resove的时候调用,值是传入resolve
方法的参数,B输出为undefind是因为前面一个then方法没有显式的返回一个promise对象,函数默认返回了一个resove值为undefined的Promise....可以一直链式调用下去:)
返回一个promise对象