前端面试时被问到JS异步执行的问题：有A、B、C三个任务，要求：A和B异步执行，二者都完成后执行C
前端面试时被问到JS异步执行的问题：有A、B、C三个任务，要求：A和B异步执行，二者都完成后执行C
方案一，`Promise.all`形式：
```
var promise1 = new Promise((resolve, reject) => {
    setTimeout(() => {
        console.log(1);
        resolve()
    }, 0);
    
});
var promise2 = new Promise((resolve, reject) => {
    setTimeout(() => {
        console.log(2);
        resolve()
    }, 0);
});
Promise.all([promise1, promise2]).then(function(res) {
  console.log(3)
});
```
方案二，`callback`形式：
```
var index = 0

function C(){
    console.log(3);
}

setTimeout(() => {
    console.log(1);
    index++;
    if(index === 2){
        C()
    }
}, 0);

setTimeout(() => {
    console.log(2);
    index++;
    if(index === 2){
        C()
    }
}, 0);
```