鍍金池/ 問答/C++  HTML/ JavaScript判斷函數(shù)執(zhí)行完畢

JavaScript判斷函數(shù)執(zhí)行完畢

在JavaScript 中,如何判斷這個函數(shù)已經(jīng)執(zhí)行完畢后,再執(zhí)行其他函數(shù)?
比如有a,b函數(shù)執(zhí)行完畢后再執(zhí)行c函數(shù)。

回答
編輯回答
溫衫

兩種情況:
1,同步函數(shù)

這個簡單,順序執(zhí)行就可以了

2,異步函數(shù)(我猜你是這種情況)async await可以解決

async function a() {
    return Promise.resolve("a");
}
async function b() {
    return Promise.resolve("b");
}
async function c() {
    await a();
    await b();
    console.log('執(zhí)行c')
}
c();
2017年6月5日 10:18
編輯回答
菊外人

原始的方法就是對要執(zhí)行的函數(shù)設置flag,執(zhí)行完后flag=true,然后判斷flag的狀態(tài)執(zhí)行后邊的函數(shù)

2018年5月10日 22:11
編輯回答
柒槿年

異步可以使用Promise

2018年6月19日 09:17
編輯回答
薄荷糖

被采納的答案,a和b不就串行了嗎?a被resolve了,才開始執(zhí)行b。但是最好的是a和b是并行的,所以可以用Promise.all

function a() {
    return new Promise((resolve) => {
        // do something...
        setTimeout(() => {
            resolve('a');
        }, 1000);
    })
}

function b() {
    return new Promise((resolve) => {
        // do something...
        setTimeout(() => {
            resolve('b');
        }, 1000);
    })
}

Promise.all([a(), b()]).then(([ret1, ret2]) => {
    console.log('ret1:', ret1);
    console.log('ret2:', ret2);
});
2017年6月5日 22:48