为了账号安全,请及时绑定邮箱和手机立即绑定

then方法的参数为函数调用时,为什么结果会这样?

老师讲的这四种情况,1和4我能明白,2勉强能理解,但是3就是不懂。

为什么doSomething和doSomethingElse是同时触发的?

https://img1.sycdn.imooc.com//5bbee8e30001b15c06710377.jpg

我自己写了个代码,按照老师这样的调用

funa().then(funb())

如图:为什么结果中,promiseValue为'a'啊!费解。

https://img1.sycdn.imooc.com//5bbee8e4000174e703700304.jpg

let funa = ()=>{
  return new Promise(resolve=>{
    resolve('a')
  })
}
let funb = ()=>{
  return new Promise(resolve=>{
    resolve('b')
  })
}

funa().then(funb())


正在回答

1 回答

我觉得这里你需要再听一下老师的解释!
个人理解:
        funa与 funb都是函数调用,因此几乎是同时执行的,这里你或许不理解为什么不是先then了在执行?主要是因为premise语法要求,因为then的参数是premise,这个then会被忽略【此处老师也有解释】,所以可以理解funa与funb几乎是一起执行的【当然是有先后的,只是差不多可以忽略了】。

    最后解释下,为啥返回的premise是a, 有上面的解释可以知道then被忽略了,返回值就是funa返回的premise,答案也正如老师所解释的一样,不知道我这么说,你是否能接受?

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

then方法的参数为函数调用时,为什么结果会这样?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信