我写了很长的代码,试图通过这个简单的代码以简单的形式复制这种情况。
我想做的是在function A()
完成后,调用function B()
。
我正在尝试使用 callback
函数,但在这种情况下,B
提前触发。
请建议我如何编写此 callback
或任何其他方法?
function A(callback){
a()
function a() {
setTimeout(aa,1000)
function aa(){
console.log("in aa")
}
}
b()
function b() {
setTimeout(bb,100)
function bb(){
console.log("in bb")
}
}
c()
function c(){
setTimeout(cc,50)
function cc(){
console.log("in cc")
}
}
callback();
}
function B() {
console.log("in B");
}
A(B)
output
in B
in cc
in bb
in aa
最佳答案
如果您希望回调在超时结束后运行,则必须在超时结束时调用它。
这意味着它需要位于您传递给 setTimeout
的函数的末尾。
使用您当前的代码,您将设置超时倒计时,然后立即调用回调。
function one(callback) {
console.log(1);
function two() {
console.log(2);
callback();
}
setTimeout(two, 250);
}
function three() {
console.log(3);
}
one(three);
关于javascript - 如何在完成一个功能后调用不同的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51989151/