使用Javascript检查2个互斥条件的最佳方法?

时间:2012-05-01 23:57:11

标签: 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 ("<%= @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;

组织这种流程的最佳方法是什么?

提前致谢!

1 个答案:

答案 0 :(得分:3)

// 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 );

一些更新