promise的then返回一个promise,为何下个then收到的不是一个promise对象而是其resolve值?
let aPromise = new Promise(resolve=>{
resolve('aPromise');
})
console.log(aPromise); // ==> Promise {'aPromise'}
这里直接打印aPromise,是值为'aPromise'的一个promise对象
let aPromise = new Promise(resolve=>{
resolve('aPromise');
})
Promise.resolve('newPromise').then(res=>aPromise).then((res)=>{
console.log(res) // ==> 'aPromise'
});
为什么在newPromise的then中间直接return aPromise,下一个then的res不是aPromise这个对象。而是其resolve值?
这有什么原理吗?这么设计有什么好处吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
比如你有两个请求A和B,A请求成功才会请求B,那么在A的resolve中返回B的promise,就可以在下一个then的resolve中直接处理B了,即形成promise的链式调用,在流程复杂的时候会很清晰地展现出代码的逻辑
如果返回的是
aPromise
这个对象你要怎么写这样?那其链式回调的意义在哪代码更加复杂那到底谁的成功先执行流程错乱
你打印的本来就是promise返回的值,就像jquery的ajax方法一下,
你的第一种写法是打印的promise对象,第二种写法是打印的promise的返回值