javascript:等待使用setInterval函数的结果
javascript: wait for result of function that uses setInterval
我想要的是:
调用函数check_and_wait()来测试一个条件是真还是假。它将在指定的时间内以设定的间隔进行检查/循环。
程序的其余部分必须等待此测试的结果。这是出问题的部分。它不需要使用setInterval,这只是它现在的实现方式。
function test_condition(){
// do some test. return true or false
}
function check_and_wait(){
var maxtime = 3000;
var start = new Date().getTime();
condition = false;
var interval = setInterval(function() {
if(condition){return true;}
else{
if( new Date().getTime() - start < maxtime ){
condition = test_condition();
}
else{return false;}
}
}, 250);
}
result = check_and_wait();
if(result){
//do something
}
else{
//do something else
}
如何使用回调呢?使用异步事件要容易得多:
function check(finishCallback, waitingCallback) {
var maxtime = 3000;
var start = new Date().getTime();
condition = false;
var interval = setInterval(function() {
if (condition) {
finishCallback();
}
else {
if (new Date().getTime() - start < maxtime ) {
condition = test_condition();
} else {
waitingCallback();
}
}
}, 250);
}
然后:
check(function() {
//do something
}, function() {
//do something else
});
处理异步进程时应该考虑使用回调函数。例如,在您的情况下,它可以是:
function check_and_wait(callback) {
var maxtime = 3000;
var start = new Date().getTime();
var interval = setInterval(function() {
if (new Date().getTime() - start < maxtime ){
if (test_condition()) {
clearInterval(interval);
callback();
}
}
}, 250);
}
check_and_wait(function() {
// do something
});
当条件发生变化时,你可以使用一个会爆发的回调:
var interval;
function check_and_wait(){
var maxtime = 3000;
var start = new Date().getTime();
condition = false;
interval = setInterval(function() {
if(!condition)
if( new Date().getTime() - start < maxtime ){
condition = test_condition();
}
}
else {
callback();
}
}, 250);
}
function callback() {
clearInterval(interval);
// do the stuff you do when you're ready
}
相关文章:
- JScript 错误: 无法分配给函数结果
- 显示基于javascript函数结果的HTML代码
- 访问来自另一个函数的函数结果
- 将函数结果传递给Javascript中的另一个函数变量
- NaN作为函数结果而不是必需的整数出现问题
- 更改javascript更改函数结果的颜色
- 从函数结果中检测三角函数
- 根据函数结果使用 JavaScript 更改图像
- 如何返回函数结果并将它们设置为标记的内部 HTML
- JavaScript 如何将函数结果与数组中的值一起传递到同一个函数中
- 用
标记包装 JQuery 函数结果
- 节点函数结果未定义
- 使用Cheerio和Response for Node web scraper,将响应函数结果传递给视图
- 在所有项目javascript中显示函数结果
- 平板电脑友好的悬停工具提示,显示基于javascript函数结果的动态文本
- 在机器时间更改后立即更新Date()函数结果
- 屈服函数结果
- 如何在JavaScript中处理异步函数结果
- 声明和定义全局变量作为函数结果有时有效
- Jquery&函数结果,作为属性名称