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,该怎么办?
即使有一个api
调用都需要花费一些时间来解决,您仍然可以按照与setTimeout
示例相同的方式使用回调。
或者,使用Promise
:
Promise
或使用function two(callback) {
new Promise(res => {
setTimeout(() => {
res();
}, 2000);
}).then(callback)
}
语法:
async/await
将async/await
放入async function two() {
await new Promise(res => {
setTimeout(() => {
res();
}, 2000);
})
callback()
}
内:
callback();
您可以使用Promises:
setTimeout
您可以使用这样的同步功能
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())