为了账号安全,请及时绑定邮箱和手机立即绑定

前端面试时被问到JS异步执行的问题:有A、B、C三个任务,要求:A和B异步执行,二者都完成后执行C

前端面试时被问到JS异步执行的问题:有A、B、C三个任务,要求:A和B异步执行,二者都完成后执行C

慕标5832272 2019-03-13 21:13:11
前端面试时被问到JS异步执行的问题:有A、B、C三个任务,要求:A和B异步执行,二者都完成后执行C
查看完整描述

6 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

方案一,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);


查看完整回答
反对 回复 2019-03-22
?
撒科打诨

TA贡献1934条经验 获得超2个赞

var a = Promise.resolve('a')


var b = new Promise((resolve, reject) => {

  setTimeout(() => {

    resolve('b')

  }, 1000)

})


var c = function() {

  console.log('c')

}


Promise.all([a, b]).then(res => {

  res.forEach(console.log)

  c()

})


查看完整回答
反对 回复 2019-03-22
?
Qyouu

TA贡献1786条经验 获得超11个赞

const A = async () =>  await 'A';

const B = async () =>  await 'B';

const C = () =>  'C';

(async function All() {

    await Promise.all([A(), B()]);

    C();

})();


查看完整回答
反对 回复 2019-03-22
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

async function A(){}


async function B(){}


function C(){}


Promise.all([A(),B()]).then(C)


查看完整回答
反对 回复 2019-03-22
?
慕斯709654

TA贡献1840条经验 获得超5个赞

给定一个计数器为2,A,B任务完成后,把计数器减去1,如果为0,则去指定C


查看完整回答
反对 回复 2019-03-22
  • 6 回答
  • 0 关注
  • 1521 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信