用Javascript检查两个互斥条件的最佳方法?
嗨,我有以下代码,用于检查Rails模型状态用Javascript检查两个互斥条件的最佳方法?,javascript,ajax,setinterval,states,Javascript,Ajax,Setinterval,States,嗨,我有以下代码,用于检查Rails模型状态 var intervalCall = setInterval(function(){ $.post("getstatus", {id:id}); var finished = "<%= @sentence.finished%>"; //THIS IS CONDITION ONE, IT IS LIKELY TO HAPPEN LATER AND I WANT TO STOP THE SETINTERVAL if ("
var intervalCall = setInterval(function(){
$.post("getstatus", {id:id});
var finished = "<%= @sentence.finished%>";
//THIS IS CONDITION ONE, IT IS LIKELY TO HAPPEN LATER AND I WANT TO STOP THE SETINTERVAL
if ("<%= @sentence.result %>"){
clearInterval(intervalCall);
state_2();
}
//THIS IS CONDITION TWO, IT IS LIKELY TO HAPPEN EARLIER AND I WANT
// TO KEEP THE SETINTERVAL RUNNING AFTER IT"S MET
else if (String(finished)== "true"){
state_1();
}
},3000);
intervalCall;
var intervalCall=setInterval(函数(){
$.post(“getstatus”,{id:id});
var finished=“”;
//这是一种情况,以后可能会发生,我想停止设置间隔
如果(“”){
clearInterval(intervalCall);
状态_2();
}
//这是第二种情况,可能会更早发生,我希望
//在满足设置间隔后保持其运行
else if(字符串(完成)=“true”){
状态_1();
}
},3000);
通话间隔;
组织这种流动的最佳方式是什么
提前谢谢
// setInterval/ setTimeout return the timer id
var intervalCall;
function updateStatus (){
// post need a callback to process the data response by server
$.post("getstatus", {id:id}, function ( data ) {
data = $.parseJSON ( data ) // asume you use jQuery and the data is a json string
if ( data.result ){
state_2(); // if you want the result as a arg, do state_2( data.result )
return;
} else {
// no need to use finished flag, when there is a response and no result, call again
// anything when no success resulte you want to do could write here
state_1();
intervalCall = setTimeout ( updateStatus, 3000 );
}
});
},3000);
intervalCall = setTimeout ( updateStatus, 3000 );
一些更新
一些更新
String(finished)=“true”
o我建议将其改进为String(finished).length==4
改变了它,但并没有完全解决问题。@zerkms是在挖苦人,我猜…如果@station.finished
将是true
或false
,你应该使用var finished=;
(没有引号)和如果(finished)
或如果(finished==true)
字符串(finished)=“true”o我建议将其改进为String(finished)。length==4
更改了它,但并没有完全解决问题。@zerkms是在讽刺……如果@句子。finished
将是true
或false,您应该使用var finished=;
(无引号),和if(finished)
或if(finished==true)
。太好了,谢谢!一个问题是我确实需要调用state_1b/c,$.post(“getstatus”,{id:id})正在触发另一个操作(由Rails控制器触发)-我需要保持该操作被触发,除非我满足状态_1条件..希望解释足够清楚..请让我知道其他情况。还有这行:data=$.parseJSON(data)//a如果您使用jQuery,并且数据是json字符串,则会给出“意外的令牌v”错误。它实际上与此解决方案一起工作(我仍然需要单独做一个$.get('/SENTURE/'+id+'.json,函数(data){if(data.result){..}});谢谢!太好了,谢谢!一个问题是我确实需要调用state_1 b/c,$.post(“getstatus”,{id:id})正在触发另一个动作(由Rails控制器触发)-我需要保持该操作被触发,除非我满足状态_1条件..希望解释足够清楚..请让我知道其他情况。还有这行:data=$.parseJSON(data)//a如果您使用jQuery,并且数据是json字符串,则会给出“意外的令牌v”错误。它实际上与此解决方案一起工作(我仍然需要单独制作一个$.get('/SENTURE/'+id+'.json,函数(data){if(data.result){..});谢谢!