使用回调完成另一个函数后如何调用一个函数?

时间:2020-01-31 10:55:09

标签: javascript callback

function one(){
    console.log(1);
}
function two(callback){
    setTimeout(()=>{
        console.log(2);
    },2000);
    callback();
}
two(one);

当我运行此代码时,首先显示1,然后显示2,因为2需要2秒才能显示。假设如果函数2中有一个api而不是console.log(2),它需要2秒钟来响应,那么在函数2完成后,我如何使用callback()来调用函数一;如果我在setTimeout函数中使用callback(),在这种情况下该怎么办,但是如果有一个不使用setTimeout且需要2-3秒的api怎么办?

4 个答案:

答案 0 :(得分:3)

即使有一个api调用需要花费一些时间来解决,您仍然可以按照与setTimeout示例相同的方式使用回调。

或者,使用Promise

function two(callback) {
    new Promise(res => {
        setTimeout(() => {
            res();
        }, 2000);
    }).then(callback)
}

或使用async/await语法:

async function two(callback) {
    await new Promise(res => {
        setTimeout(() => {
            res();
        }, 2000);
    })
    callback();
}

答案 1 :(得分:1)

您可以使用Promises:

function one(){
    console.log(1);
}

function two(){
    return new Promise((resolve, reject) => {
       setTimeout(()=>{
         console.log(2);
         resolve()
      },2000);
    })
}

two().then(() => one())

答案 2 :(得分:1)

您可以使用这样的同步功能

DENSE_RANK() OVER (ORDER BY condition1, condition2, condition3)

这是参考文献link

答案 3 :(得分:0)

callback();放在setTimeout内:

function one(){
    console.log(1);
}
function two(callback){
    setTimeout(()=>{
        console.log(2);
        callback();
    },2000);
    
}
two(one);

相关问题