异步的快慢比较————一场面试的技术较量

今天,我做一个异步快慢的比较对比总结,为了证明的我说是对的,自己亲自动手写了代码比较。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
setTimeout(function(){ console.log(1)},0);

const promise = new Promise(function(resolve, reject) {

console.log(2);

setTimeout(function(){ //异步事务1,简单用setTimeout模拟,为了具有可比性,都用时间0
resolve();
},0);

});

promise.then(function() {
console.log(3);
});


async function abc(){
setTimeout(function(){ //异步事务2,简单用setTimeout模拟,为了具有可比性,都用时间0
console.log(4);
},0);
}

abc();

输出结果是 2134,所以我今天的回复是完全正确的,但是我的正确的前提是:我是和面试官说具体看 promise和async里面的 异步事务如何封装,然后具体比较 异步时间快慢,所以我上面代码我用了settimeout模拟异步事务,因为竟然做异步,里面必须肯定存在异步,所以我的假设就是里面存在异步事务。

但是从另一侧来说,具体看下面代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
setTimeout(function(){ console.log(1)},0);

const promise = new Promise(function(resolve, reject) {
// ... some code
console.log(2);
resolve();
});

promise.then(function() {
console.log(3);
});


async function abc(){
console.log(4);
}

abc();

输出结果是2431,这种是里面不存在异步的情况下。 但是当时候和面试官沟通没有写出具体代码,只有草代码,所以存在沟通上的误解,导致各方执持自己意见。

无论谁对与错,总结很重要,我做到了,加油!