在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 對于一個api,前臺有若干id,每次請求這個api,并判斷:api返回true,

對于一個api,前臺有若干id,每次請求這個api,并判斷:api返回true,則成功并請求下一個;

對于一個后臺的api(query_status?id=1),前臺有若干個id(ids=[1,2,3,4,5]),每次js取出一個id,并請求這個api,獲取當(dāng)前的狀態(tài),然后進(jìn)入判斷:1、api返回的status為true,則標(biāo)記為成功并請求下一個id;2、api在15s內(nèi)沒有返回,則標(biāo)記為超時并請求下一個。 每次只請求一個id,而且當(dāng)上一個id請求完成之后再處理下一個。

目前我后臺是用tornado寫的,當(dāng)前的代碼嘗試了用js去輪詢,不過會阻塞前端頁面

我的目的:1、如果getconfirm獲取到的api的flag為true 則標(biāo)記此為通過,并處理下一個,否則如果10s內(nèi)都獲取得到的api的flag為false,則標(biāo)記為超時,并處理下一個

菜鳥代碼很渣,貼出關(guān)鍵邏輯求大佬指點


function wait_for_resp(vid){
  //cflag = getconfirm(vid);
  for (let i=0;i<5;i++)
  {
    sleep(2000);//sleep 3s;
    cflag = 0;
    cflag = getconfirm(vid);//這里的目的是 1、如果getconfirm獲取到的api的flag為true 則標(biāo)記此為通過,并處理下一個,否則如果10s內(nèi)都獲取得到的api的flag為false,則標(biāo)記為超時,并處理下一個
    if(cflag==1){//confirm=1 pass
      return 1;
      break;
    }
  }
  return 2; //timeout 15s
}

function main(){
 for(let i=0;i<ar1.length;i++){
        if (i==0){
          runurl(ar1[i]);//runurl如果通過 則會給后臺對應(yīng)到這個vid=ar1[i]的confirm flag設(shè)置為true 否則默認(rèn)為false
          console.log('1st runned!');
        }
        else
        { 
          wflag = 0;
          wflag = wait_for_resp(ar1[i-1]);
          console.log('wflag:   '+wflag);
          if (wflag==1){ //run next when the ar1[i-1] pass or timeout
            document.getElementById(ar1[i-1]).setAttribute('class', 'testpagesuccess');
            console.log('now set'+ar1[i-1]+'and running  :'+ar1[i]);
            runurl(ar1[i]);
          }
          else if(wflag==2){
            console.log('timeout');
            document.getElementById(ar1[i-1]).setAttribute('class', 'testpagefail');
            runurl(ar1[i]);
          }
        }}
回答
編輯回答
不討喜

去搜Promise。

另外吐槽一下

sleep(2000);//sleep 3s

2018年8月9日 20:13