我有一个JavaScript函数;从那以后我称之为延迟功能。
function(){
// code
doDelay();
// some other functionality....
}
function doDelay(){
setTimeout(function() {alert("after wait");}, 10000);
}
等待10秒后警报即将到来after wait
。但它不再继续我的主要功能的some other functionality....
..延迟后我想执行剩余的功能。我怎么能这样做?
答案 0 :(得分:3)
setTimeout
函数不会延迟执行。相反,它会安排一个稍后执行的功能。要做你想做的事,你需要将代码更改为:
function(){
...
...
doDelay(function(){
some other functionality....
});
}
function doDelay(callback){
setTimeout(function() {callback()}, 10000);
}
确实,javascript已经有了doDelay功能。它被称为setTimeout
:
function(){
...
...
setTimeout(function(){
some other functionality....
},10000);
}
如果你希望外部函数也延迟执行后面的代码,你还需要传递回调函数:
function foo (callback){
...
...
doDelay(function(){
some other functionality....
callback();
});
}
因此,例如,它允许您重写这样的内容:
foo();
// do other stuff after foo...
到此:
foo(function(){
// do other stuff after foo...
});
您基本上需要围绕回调重构逻辑。
答案 1 :(得分:0)
你不能将其他功能包装在另一个函数中,然后从你的SetTimeout调用该函数吗?
function(){
doDelay();
}
function doDelay(){
setTimeout(function() {alert("after wait");andTheRest();}, 10000);
}
function andTheRest(){
//Rest of the stuff here
}
答案 2 :(得分:0)
doDelayAndThenContinue(){
setTimeout(function() {alert("after wait");
//do other functionality here
}, 10000);
}
从main方法中删除do do功能并输入setTimeout