Javascript+;运行函数X秒
有没有办法在Javascript+;运行函数X秒,javascript,Javascript,有没有办法在Javascript中在5秒内运行我的函数 例如,如果我有功能A和功能B。我想运行功能A5秒钟,紧接着,它将运行功能B 如果功能A只需1秒即可完成该过程,则只需再等待4秒 但是如果功能A需要3秒钟才能完成,那么在处理功能B 如果功能A花费的时间超过5秒,则B需要等待A完成其工作,直到可以开始其工作。(编辑) 现在,我正在使用我不久前发现的睡眠功能 function wait(ms){ var start = new Date().getTime(); var end
Javascript
中在5秒内运行我的函数
例如,如果我有功能A
和功能B
。我想运行功能A
5秒钟,紧接着,它将运行功能B
- 如果
只需1秒即可完成该过程,则只需再等待4秒李>功能A
- 但是如果
需要3秒钟才能完成,那么在处理功能A
功能B
- 如果
花费的时间超过5秒,则B需要等待A完成其工作,直到可以开始其工作。(编辑)功能A
function wait(ms){
var start = new Date().getTime();
var end = start;
while(end < start + ms) {
end = new Date().getTime();
}
}
wait(5000);
函数等待(毫秒){
var start=new Date().getTime();
var结束=开始;
同时(结束<开始+毫秒){
end=新日期().getTime();
}
}
等待(5000);
但使用此代码时,无论函数A需要多少时间来完成其过程,它都需要等待5秒钟
编辑
函数A
执行ajaxpost
调用。这使得它需要不同的时间来完成它的工作
这个问题与其他问题不同,因为:
我看到了这些最简单的方法:
函数A
是异步的(例如发送AJAX请求并等待回复),只需使用设置超时
,因为请求将在后台完成,而不会冻结主进程。因此,funcA()
将立即在UI线程上运行,然后下一个表达式将立即发生(等待5秒),然后在完成响应获取时调用来自AJAX响应的回调
funcA();
setTimeout(funcB, 5000);
函数A
最多需要5秒,并且您需要更动态的等待,您可能需要计时并减去:
var startTime = new Date().getTime(), endTime;
funcA();
endTime = new Date().getTime();
setTimeout(funcB, 5000 - (endTime - startTime));
功能A
可能需要5秒以上的时间,而功能B
需要等待,我建议类似的操作:
function funcA() {
var startTime = new Date().getTime(), endTime;
// ... code ...
$.post(..., {
...,
// when done/resolved the AJAX request ->
success: function(response) {
endTime = new Date().getTime();
setTimeout(funcB, 5000 - (startTime - endTime));
}
});
}
你不是说函数a需要7秒钟吗?函数a正在执行异步工作吗?还是因为其他原因需要1秒?setTimeout、setInterval、$evalAsync、$applyAsync,网络工作者可以完成这项工作setTimeout()和promise()的组合应该可以。@casraf@Juhana
函数a
是AjaxPOST
调用,它可以在不同的时间完成这项工作,取决于进程。如果funcA
需要5001(或更多)毫秒才能完成该怎么办<代码>等待时间=5000-(结束时间-开始时间);如果(waitTime<0){waitTime=0;}@aifrim没有必要,因为负超时会自动转换为最小值。如果使用第一种方法,但Function需要5秒以上才能完成,会发生什么。Func B会在不等待Function回复的情况下先完成其工作吗?是的,会的。如果你真的想深入了解它,你可以使用某种反映任务是否完成的条件,每隔几毫秒重试一次,直到响应正确为止。@alfrim不,如果它执行异步操作,它实际上不会等待任务完成后再继续执行任务。