0

こんにちは、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;

このような流れを整理するにはどうすればよいでしょうか?

前もって感謝します!

4

1 に答える 1

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

いくつかの更新

于 2012-05-02T00:44:15.670 に答える