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

问题描述 投票:0回答:4
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,该怎么办?

javascript callback
4个回答
0
投票

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

或者,使用Promise

Promise

或使用function two(callback) { new Promise(res => { setTimeout(() => { res(); }, 2000); }).then(callback) } 语法:

async/await

0
投票

async/await放入async function two() { await new Promise(res => { setTimeout(() => { res(); }, 2000); }) callback() } 内:

callback();

0
投票

您可以使用Promises:

setTimeout

0
投票

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

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

这里是参考文献function one(){ console.log(1); } function two(){ return new Promise((resolve, reject) => { setTimeout(()=>{ console.log(2); resolve() },2000); }) } two().then(() => one())

© www.soinside.com 2019 - 2024. All rights reserved.