关于Promise.then(callback)不是很明白?
javascript吧
全部回复
仅看楼主
level 7
从入门☞放弃
楼主
then方法返回一个Promise对象,它对callback解析,如果callback return了值,就解析它;如果callback返回的是Promise对象,就等待Promise的结果。
那譬如
> let one = Promise.resolve(1)
> one.then(value => console.log(value))
1
这里箭头函数只是打印结果,没有return,为何能得到结果1?是怎么实现的?
对于这个Promise异步行为感觉没懂?
2023年05月28日 12点05分
1
level 2
kennoww
我是这么理解的,你看看对不对。then中传出来的值是给下一个then用的。你的箭头函数打印出来的1是由上面那个resolve函数传递给then中回调函数的参数value的。
2023年05月28日 15点05分
2
level 2
kennoww
如果在这个then下面再写一个.then(value=>{console.log(value)}).那么这第二个then并不会执行
2023年05月28日 15点05分
3
从入门☞放弃
为啥不会执行?
2023年05月28日 23点05分
kennoww
@从入门☞放弃
> let one = Promise.resolve(1) > one.then(value => console.log(value)) > .then(value => console.log(value)) then()执行依赖调用它的Promise实例的状态,而不是它自身回调函数中的状态。
2023年05月29日 02点05分
kennoww
@kennoww
第一个then之所以打印1是因为调用它的Promise实例one的状态已经resolved,并传出1给value,但是第一个then本身没有改变状态的方法,所以第二个then一直在pending
2023年05月29日 02点05分
从入门☞放弃
@kennoww
第一个then返回的Promise状态是最初的pending,而then只接受成功的状态所以第二个then不工作? 为什么then里的回调函数不改变其状态?
2023年05月29日 03点05分
level 3
你也哦哦噢耶
then中的value不就是Promise的resolve指定的值吗,有啥问题吗
2023年05月28日 16点05分
4
level 3
空240
为啥得不到,1就是value,你把value为1的变量log出来,不就是1了吗
2023年06月14日 14点06分
6
1