示例中Promise的then回调函数参数cake的具体含义是什么?
Promise回调参数逻辑解答
示例代码如下:
const jeffBuysCake3 = cakeType => { return new Promise((resolve, reject) => { setTimeout(()=> { if (cakeType === 'black forest') { resolve('black forest cake!') } else { reject('No cake 😢') } }, 1000) }) } console.log(jeffBuysCake3('black forest').then(cake => console.log(cake)).catch(nocake => console.log(nocake)))
具体逻辑拆解:
- 调用
jeffBuysCake3('black forest')会返回一个Promise实例,这个实例的状态默认是 pending(等待中) - 1秒后定时器触发,判断符合条件,执行
resolve('black forest cake!'),此时Promise的状态变为成功,同时绑定成功值为你传入resolve的字符串'black forest cake!' .then()的作用是注册「Promise成功时要执行的回调函数」,你写的cake => console.log(cake)就是这个回调函数,其中cake是你自定义的形参名,换成res、result等任意名称效果都相同- 当Promise变为成功状态时,JS会自动把Promise绑定的成功值(也就是resolve的入参)传入你注册的回调函数,赋值给形参
cake,所以console.log(cake)才会输出black forest cake! - 结论:
cake不等于resolve方法本身,cake的值就是你调用resolve时传入的内容。同理catch里的nocake形参,接收的就是reject调用时传入的错误内容。
内容的提问来源于stack exchange,提问作者Cheetara
相关产品推荐
相关产品推荐

