等待异步功能完成,然后执行.then()

时间:2018-11-13 10:07:11

标签: javascript node.js asynchronous promise

嗨,我刚刚开始学习异步函数,我想问一下所有异步函数完成后是否有一种方法可以在.then()中执行代码?

  1. print1
  2. print1-完成
  3. print2
  4. print2-完成
  5. 结束

print1()和print2()是一些异步执行速度更快的函数,但必须同步调用它们。这意味着我必须通过异步函数-> print()来调用它们。

async function print()
{
    try {
        var print1 = await printFor1();
        console.log('print1 - Finished');
        var print2 = await printFor2();
        console.log('print2 - Finished');
    } catch (error) {
        console.error(error);
    }
}

function printFor1(){
    return new Promise((resolve,reject) => {
        try {
            setTimeout(()=>{
                console.log('print1');
                resolve();
            },2000)
        } catch (error) {
           console.error(error);
           reject(); 
        }
    })
}

function printFor2(){
    return new Promise((resolve,reject) => {
        try {
            setTimeout(()=>{
                console.log('print2');
                resolve();
            },3000)
        } catch (error) {
           console.error(error);
           reject(); 
        }
    })
}

print().then(console.log('End'));

2 个答案:

答案 0 :(得分:1)

您需要在回调中移动console

print().then(() => { console.log('End') });

答案 1 :(得分:0)

您的代码中有1个小错误,其他都没问题。

更改此

print().then(console.log('End'));

print().then(() => console.log('End'));