Promise and setTimeout 到底谁快

昨天是个紧张但是美好的一天,学到了很多东西,也刺激了我的学习热情。。。

今天是个紧张但是美好的一天,我在这里写下了这篇博客。。。

我们今天讨论一下,promise和settimeout到底谁执行的速度快?

测试荔枝一:(先在脑袋里想想,在看答案哦)

12115772-61a4ee0bec1aba20.png
1.jpg

答案:

12115772-519c6fa3a907914c.png
2.jpg

测试荔枝二:

12115772-f61b8ffb1c38d2f1.png
2.jpg

答案:

12115772-fdf8ddf2ebbf0dc4.png

测试荔枝三:

console.log('1');

setTimeout(function() {

    console.log('2');

    process.nextTick(function() {

        console.log('3');

    })

    new Promise(function(resolve) {

        console.log('4');

        resolve();

    }).then(function() {

        console.log('5')

    })

})

process.nextTick(function() {

    console.log('6');

})

new Promise(function(resolve) {

    console.log('7');

    resolve();

}).then(function() {

    console.log('8')

})

setTimeout(function() {

    console.log('9');

    process.nextTick(function() {

        console.log('10');

    })

    new Promise(function(resolve) {

        console.log('11');

        resolve();

    }).then(function() {

        console.log('12')

    })

})

答案:

12115772-35db1ff0c844bb54.png

其实从答案中不难发现几个规律,

1. promise和process.nextTick在程序中是先于settimtout执行的;

2. 在promise和process.nextTick里面的console语句的执行速度是三个中最快,它与promise和process.nextTick执行的顺序无关,只与promise和process.nextTick声明的顺序有关;

好了,以上的结果也只是表象,想知道具体内部实现原理我们还是需要对JavaScript的同步任务和异步任务进行深入了解了。

关于这点有一个很好的博客推荐大家:https://juejin.im/post/59e85eebf265da430d571f89

转载于:https://www.jianshu.com/p/e53925e8af0e

猜你喜欢

转载自blog.csdn.net/weixin_33690367/article/details/91255452
今日推荐