code: function errorCbHandler(errorCb, delayTime) {
      //uc现在打不开了
      if(isUC){
          isRuning = false;
          errorCb();
      }else if (isSafari) {
          //ios8 以上后台setInterval 确定会被 滞后执行，
          //但是android因为是多线程的所以貌似不行的  uc浏览器也有同样的问题
          //android 浏览器 测试uc
          //总计倒计时2s
          //ios 会弹出来一个确认对话框，因此 多加1000 延迟
          var count = Math.floor((delayTime + 1000) / 10);
          var tmpCount = count;
          var currentTime = new Date().getTime();
          var ios8UpIde = setInterval(function() {
              count--;
              if (count === 0) {
                  clearInterval(ios8UpIde);
                  if (new Date().getTime() - currentTime < (tmpCount * 10 + 500)) {
                      errorCb();
                  }
                  isRuning = false;
              }
          }, 10);
      } else {
          errorIde = setTimeout(function() {
              isRuning = false;
              if (!document.hidden) {
                  errorCb();
              }
          }, delayTime);
      }
  }
docs: 普通错误setTimeout id 
  失败异常处理