Javascript Jquery每隔几秒钟执行一次操作,除非对象中的所有值都为true
Javascript Jquery每隔几秒钟执行一次操作,除非对象中的所有值都为true,javascript,jquery,Javascript,Jquery,我有以下代码: var obj = { eins : false, zwei : false, drei : false }; $.each(obj, function (k, v) { if (!v) { console.log(false); } }); 现在我要做的是:检查obj中的所有值是否都是真的。如果他们正在这样做,如果他们没有,请再试一次 我试着将setInterval和$都弄乱,但无法使其同步运行 您根本不需要使用$.each()。for(
我有以下代码:
var obj = {
eins : false,
zwei : false,
drei : false
};
$.each(obj, function (k, v) {
if (!v) {
console.log(false);
}
});
现在我要做的是:检查obj中的所有值是否都是真的。如果他们正在这样做,如果他们没有,请再试一次
我试着将setInterval和$都弄乱,但无法使其同步运行 您根本不需要使用$.each()。for(…in…)在以预定义间隔调用的函数中非常有效
var obj = {
eins: false,
zwei: false,
drei: false,
};
var id = setInterval(function() {
for(var key in obj) {
if(obj[key] === false) return;
}
// No property was false
clearInterval(id);
// do anything you want here
}, 1000);
如果需要在检查后检索值,请查看Promise类:)您根本不需要使用$.each()。for(…in…)在以预定义间隔调用的函数中非常有效
var obj = {
eins: false,
zwei: false,
drei: false,
};
var id = setInterval(function() {
for(var key in obj) {
if(obj[key] === false) return;
}
// No property was false
clearInterval(id);
// do anything you want here
}, 1000);
如果您需要在检查后检索值,请查看Promise类:)刚刚创建了一个简单的演示
var obj={
艾因斯:错,
中伟:错,,
德雷:错
};
var doStuffTimer=setInterval(函数(){
$。每个(对象、功能(k、v){
如果(!v){
$(“#logger”).append(“obj.eins=”+obj.eins+“obj.zwei=”+obj.zwei+“obj.drei=”+obj.drei+”);
}
});
$(“#logger”)。追加(“------------”;
},3000),//每3秒检查一次
flagTimer=setInterval(计时器下面的函数(){/*仅用于演示目的*/
如果(!obj.eins){
obj.eins=真;
}否则如果(!obj.zwei){
obj.zwei=真;
}否则如果(!obj.drei){
obj.drei=真;
}否则{
$(“#logger”).append(“最终结果:obj.eins=”+obj.eins+“obj.zwei=”+obj.zwei+“obj.drei=”+obj.drei+”);
clearInterval(flagTimer);
clearInterval(doStuffTimer);//清除doStuffTimer;我们不想让计时器一直运行
}
}, 5000); //每5秒更改一次标志。。仅用于演示目的
p{
保证金:2倍;
填充:0;
}
刚刚创建了一个简单的演示,演示了您正在尝试的内容
var obj={
艾因斯:错,
中伟:错,,
德雷:错
};
var doStuffTimer=setInterval(函数(){
$。每个(对象、功能(k、v){
如果(!v){
$(“#logger”).append(“obj.eins=”+obj.eins+“obj.zwei=”+obj.zwei+“obj.drei=”+obj.drei+”);
}
});
$(“#logger”)。追加(“------------”;
},3000),//每3秒检查一次
flagTimer=setInterval(计时器下面的函数(){/*仅用于演示目的*/
如果(!obj.eins){
obj.eins=真;
}否则如果(!obj.zwei){
obj.zwei=真;
}否则如果(!obj.drei){
obj.drei=真;
}否则{
$(“#logger”).append(“最终结果:obj.eins=”+obj.eins+“obj.zwei=”+obj.zwei+“obj.drei=”+obj.drei+”);
clearInterval(flagTimer);
clearInterval(doStuffTimer);//清除doStuffTimer;我们不想让计时器一直运行
}
}, 5000); //每5秒更改一次标志。。仅用于演示目的
p{
保证金:2倍;
填充:0;
}
简单循环,查看对象是否全部为真,确定步骤所需的全部是if/else
var obj={
艾因斯:错,
中伟:错,,
德雷:错
};
//函数调用以查看代码是否已更新
函数检查(){
//检查对象中的每个属性是否为真
var isValid=Object.keys(obj).every(函数(键){
返回obj[键];
});
//如果是真的,做你需要做的
如果(有效){
document.body.style.backgroundColor=“绿色”;
}否则{//不正确,请再次运行检查
setTimeout(检查,500);//下一次检查是半秒
}
}
检查()//初始化检查
//为演示翻转数据的方法
document.querySelector(“按钮”).addEventListener(“单击”),函数(){
obj={
艾因斯:没错,
中伟:是的,,
是的
};
});代码>
设置
简单循环,查看对象是否全部为真,确定步骤所需的全部是if/else
var obj={
艾因斯:错,
中伟:错,,
德雷:错
};
//函数调用以查看代码是否已更新
函数检查(){
//检查对象中的每个属性是否为真
var isValid=Object.keys(obj).every(函数(键){
返回obj[键];
});
//如果是真的,做你需要做的
如果(有效){
document.body.style.backgroundColor=“绿色”;
}否则{//不正确,请再次运行检查
setTimeout(检查,500);//下一次检查是半秒
}
}
检查()//初始化检查
//为演示翻转数据的方法
document.querySelector(“按钮”).addEventListener(“单击”),函数(){
obj={
艾因斯:没错,
中伟:是的,,
是的
};
});代码>
设置
您可以使用数组.prototype。每个
方法:
var allTrue = Object.keys(obj).every(function(key) {
return obj[key] === true;
});
您可以使用Array.prototype。每个方法:
var allTrue = Object.keys(obj).every(function(key) {
return obj[key] === true;
});
以下是另一种方法:
var obj={
艾因斯:错,
中伟:错,,
德雷:错
};
函数allTrue(obj){
var all_true=true;
Object.keys(obj).forEach(函数(key){
如果(obj[key]==false)全部为true=false;
});
返回所有_true;
}
函数doSomething(){
//做点什么
var-key;
Object.keys(obj).forEach(函数(key){
如果(obj[键]==假){
键=键;
}
});
obj[key_]=true;
log('iteration');
如果(!allTrue(obj))doSomething();
}
doSomething()代码>以下是另一种方法:
var obj={
艾因斯:错,
中伟:错,,
德雷:错
};
函数allTrue(obj){
var all_true=true;
Object.keys(obj).forEach(函数(key){
如果(obj[key]==false)全部为true=false;
});
返回所有_true;
}
函数doSomething(){
//做点什么
var-key;
Object.keys(obj).forEach(函数(key){
如果(obj[键]==假){
键=键;
}
});
obj[key_]=true;
log('iteration');
如果(!allTrue(obj))doSomething();
}
doSomething()代码>