关于resolve

关于resolve

function foo(){

    ​return new Promise(resolve => {

    ​    ​console.log('a');

    ​    ​resolve();

    ​})

}

foo().then(function(){

    ​console.log('b');

    ​return foo();

}

请问老师,这里的resolve是一个参数,为什么可以使用resolve调用它呢?

这里的resolve和后面then里面的匿名函数有关系吗?

如果没有关系resolve这个参数到底指代什么呢?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,执行顺序是同学理解的这样,但是输出顺序不一定。

因为new Promise()执行完毕之后才会去调用then方法,然后执行里面的函数,所以在执行promise中代码的时候输出了a,然后执行then方法中函数的时候输出了b。

但是如果promise中有定时器,也会执行定时器,但是因为定时器是异步的,所以会最后输出。例如:

http://img1.sycdn.imooc.com//climg/60113a9e09b274e705910541.jpg

这样就会先输出b,然后输出a

http://img1.sycdn.imooc.com//climg/60113aad09f097de01710061.jpg

祝学习愉快!

好帮手慕星星 2021-01-27 14:24:29

同学你好,问题解答如下:

1、promise方法有两个参数,一个是resolve,一个是reject,这两个都是函数参数,所以可以直接调用。resolve代表成功时要做的事情,reject代表失败时要做的事情

http://img1.sycdn.imooc.com//climg/6011063009050f7306160342.jpg

2、then方法中也有两个参数,第一个函数对应着resolve,第二个函数对应着reject。当resolve调用时,就会执行then方法中第一个参数函数;当reject调用时,就会执行then方法中第二个参数函数

http://img1.sycdn.imooc.com//climg/601106ae093d3b1307910543.jpg

例如上面代码中调用的是reject方法,then方法中就会执行第二个参数。输出错误

http://img1.sycdn.imooc.com//climg/601106d209c9658e01850040.jpg

3、关于reject这里可以先了解,在后面小节中会讲到

http://img1.sycdn.imooc.com//climg/60110714091500d603240376.jpg

祝学习愉快!

  • 提问者 蛋挞狂魔 #1

    老师,我把resolve()写在console.log('a')之前后,发现还是a先输出,所以执行顺行永远都是promise函数优先,然后在执行回调函数的内容吗?

    2021-01-27 14:27:51
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师