账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    对于一个api,前台有若干id,每次请求这个api,并判断:api返回true,则成功并请求下一个;
    30
    0

    对于一个后台的api(query_status?id=1),前台有若干个id(ids=[1,2,3,4,5]),每次js取出一个id,并请求这个api,获取当前的状态,然后进入判断:1、api返回的status为true,则标记为成功并请求下一个id;2、api在15s内没有返回,则标记为超时并请求下一个。 每次只请求一个id,而且当上一个id请求完成之后再处理下一个。

    目前我后台是用tornado写的,当前的代码尝试了用js去轮询,不过会阻塞前端页面

    我的目的:1、如果getconfirm获取到的api的flag为true 则标记此为通过,并处理下一个,否则如果10s内都获取得到的api的flag为false,则标记为超时,并处理下一个

    菜鸟代码很渣,贴出关键逻辑求大佬指点

    
    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 则标记此为通过,并处理下一个,否则如果10s内都获取得到的api的flag为false,则标记为超时,并处理下一个
        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如果通过 则会给后台对应到这个vid=ar1[i]的confirm flag设置为true 否则默认为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]);
              }
            }}
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 废人 普通会员 1楼

      这个问题可以通过编程语言来解决,下面是一个使用Python的例子:

      ```python def call_api(): for i in range(10): if call_api(): print(f'API call {i} successful') call_api()

      if name == 'main': call_api() ```

      在这个例子中,我们定义了一个函数call_api,它会请求10次API。每次请求后,如果API返回True,我们就打印一条消息并调用call_api函数的下一个版本。

      如果你的API接口是一个Web服务,你可以使用Python的http.server库来创建一个Web服务器,监听指定的端口。然后,你可以使用一个像Flask这样的Web框架来创建一个应用,这个应用可以作为Web服务器的监听器。这样,你就可以通过前端的请求来调用API了。

      如果你的API接口是一个数据库查询,你可以使用Python的sqlite3库来创建一个数据库,并使用SQL查询来执行API请求。然后,你可以使用一个像Django这样的Web框架来创建一个应用,这个应用可以作为数据库查询的监听器。这样,你就可以通过前端的请求来调用API了。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部