2

デバイスが最初に起動されてサーバーに登録されているかどうかを確認し、regStatus変数を返す関数checkReg()があります。機能は正常に動作しますが、登録が完了するまでに少し時間がかかり、登録が完了したことを確認しないとアプリケーションを続行できません。

単純なスレッドを使用して、regStatusを1秒に1回チェックし、登録されていない場合は5回試行した後、スレッドを強制終了して戻ります。5回試行する前に実行した場合は、スレッドを強制終了して続行します。

Thread(run every 1 sec){
    regStatus=checkReg();
    if(regStatus==='done'){

        //do something
        //kill thread
    }else if(regStatus==='inprogress'){

        //do nothing
    }elseif(regStatus==='error'){

        //kill thread
    }
}

私はJSにまったく慣れていないので、スレッドを開始する方法、時間を計る方法、またはスレッドを強制終了する方法がわかりません。setTimeout関数を使用しましたが、希望どおりに実行できるかどうかわかりません。

4

1 に答える 1

2

JavaScriptには一般にスレッドがありませんが、setInterval()代わりに簡単に使用できます。

var retry = 0

function checkStatus() {
  var regStatus=checkReg();
  if(regStatus==='done'){
    //...
  }
  if(++retry > 5) {
    clearTimeout(id);
  }
}

var id = setInterval(checkStatus, 1000);
于 2012-11-15T19:20:51.370 に答える