vue 폴 링 요청 솔 루 션 의 전체 인 스 턴 스

윤 문의 이해
사실 폴 링 의 중점 은 순환 자체 가 아니 라 몇 시간 간격 으로 한 번 씩 실행 하 느 냐 에 있다.ajax 는 비동기 요청 입 니 다.요청 을 시작 할 때 부터 응답 을 받 을 때 까지 완전한 과정 입 니 다.이 과정 에 필요 한 시간 은 예측 할 수 없습니다.극단 적 인 점 을 말 합 니 다.요청 에 필요 한 시간 이 우리 가 문의 하 는 간격 을 초과 하면 많은 문제 가 발생 할 수 있 습 니 다.따라서 문의 간격 은 이 요청 과정 이 완성 되 는 것 을 확보 하 는 기초 위 에 있어 야 합 니 다.이것 도 논리 에 더욱 부합된다.
업무 설명:
  • 페이지 에서 첫 페이지 의 데 이 터 를 초기 화하 고 10 초 간격 으로 현재 페이지 의 데이터 새로 고침
  • 선별 조건 을 변경 하거나 페이지 번 호 를 변경 하여 데 이 터 를 직접 갱신 한 다음 에 10 초 마다 현재 데이터 갱신
  • 비 즈 니스 논리 점 분석:
  • 수 동 호출 시 즉시 요청 실행
  • 이후 10 초 간격 으로 한 번 씩 실행 하여 목록 새로 고침
  • 사고의 방향 을 실현 하 다.
  • 직접 호출 요청
  • 요청 한 성공 적 인 리 셋 함수 에 타이머 setTimeout
  • 을 설정 합 니 다.
  • 타이머 에서 1.2 조작 반복
  • 1.2.3 절 차 를 재 귀 함수 로 밀봉
  • 
    //     
        polling (page) {
          this.getWorks(page).then(res => {
            this.pollingST = setTimeout(() => {
              clearTimeout(this.pollingST)
              this.polling(page)
            }, 10000)
          })
        }
    
    왜 setInterval 을 사용 하지 않 습 니까?
    setInterval 의 기능 은 폴 링 의 개념 에 완벽 하 게 부합 되 는 것 처럼 보 입 니 다.만약 에 우리 의 조작 이 동기 코드 라면 setInterval 을 사용 하 는 것 은 아무런 문제 가 없습니다.문 제 는 setInterval 이 유연성 이 없 기 때문에 우 리 는 지난번 요청 이 이미 끝 났 는 지 알 수 없습니다.그래서 setTimeout 이 더 좋 을 것 같 아 요.
    주의 할 점
    폴 링 에서 저 는 타 이 머 를 pollingST 변수 로 기 록 했 습 니 다.실행 하기 전에 먼저 타 이 머 를 지 워 야 합 니 다.재 귀적 인 호출 은 타이머 내부 에 있 기 때문에 타 이 머 를 제거 하면 폴 링 을 편리 하 게 끝 낼 수 있 습 니 다.
    전체 의사 코드
    
    <script>
    export default {
      data () {
        return {
          pollingST: null
        }
      },
      methods: {
        //   change  
        pageChange (params) {
          //        
          clearTimeout(this.pollingST)
          //     
          this.polling(params)
        },
        //       
        getWorks () {
          return new Promise(resolve => resolve({}))
        },
        //     
        polling (params) {
          this.getWorks(params).then(res => {
            this.pollingST = setTimeout(() => {
              clearTimeout(this.pollingST)
              this.polling(params)
            }, 10000)
          })
        }
      },
      created () {
        //     
        this.polling({ page: 1, pageSize: 5 })
      },
      destroyed () {
        clearTimeout(this.pollingST)
      }
    }
    </script>
    
    총결산
    여기 서 vue 폴 링 솔 루 션 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 vue 폴 링 솔 루 션 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기