setTimeout 方式实现定时器

checkPolling () {
    if (this.state !== this.CONF.STATE.login) {
      return
    }
    let interval = Date.now() - this.lastSyncTime
    if (interval > 1 * 60 * 1000) {
      let err = new Error(`状态同步超过${interval / 1000}s未响应,5s后尝试重启`)
      debug(err)
      this.emit('error', err)
      clearTimeout(this.checkPollingId)
      setTimeout(() => this.restart(), 5 * 1000)
    } else {
      debug('心跳')
      this.notifyMobile()
        .catch(err => {
          debug(err)
          this.emit('error', err)
        })
      this.sendMsg(this._getPollingMessage(), this._getPollingTarget())
        .catch(err => {
          debug(err)
          this.emit('error', err)
        })
      clearTimeout(this.checkPollingId)
      this.checkPollingId = setTimeout(() => this.checkPolling(), this._getPollingInterval())
    }
  }

猜你喜欢

转载自www.cnblogs.com/au_ww/p/11252297.html
今日推荐