JS 폴링의 ABC
3682 단어 pollingpollinatorjavascriptnode
코드에서 Tennet이 발생하는 것을 원하지 않습니다.
"대단한 일이 뭐지? 그냥 setInterval을 사용하세요!"라고 생각할 수도 있습니다. 그렇게 빠르지 않아!
function callMe() {
// sync stuff
console.log('Aye there!')
}
setInterval(callMe, 1000)
// logs
// [0:01] Aye there!
// [0:02] Aye there!
// [0:03] Aye there!
동기 함수를 폴링하는 데 적합해 보일 수 있습니다. 비동기식으로 만드는 부작용을 추가하면 여기에 완전히 다른 이야기가 있습니다. 비동기 함수는 폴링 간격보다 긴 시간에 결과를 산출할 수 있습니다.
let calls = 0
async function callMe() {
calls++
const callNo = calls
// async stuff
console.log(`Call #${callNo}`)
}
setInterval(callMe, 1000)
// logs
// [0:01] Call #1
// [0:03] Call #3
// [0:05] Call #2
// [0:08] Call #4
이것은 코드에 심각한 오류를 일으킬 수 있는 혼란입니다. 결과 사이에 일정한 시간 간격이 없습니다. 더 중요한 것은 연대기가 모두 엉망이라는 것입니다! Chris Nolan은 행복하겠지만 우리는 그렇지 않습니다!
올바른 순서로 호출을 받으려면 다음이 필요합니다.
물건 얻기
데이터를 다시 가져오는 것은 약간 까다로울 수 있습니다. 대부분의 경우 폴링된 함수는 흥미로운 결과를 반환합니다. 이 데이터를 검색하려면 콜백 함수가 필요합니다. 많은 콜백을 허용하기 위해 이벤트를 첨부할 수도 있습니다. 특정 응답이 도착하고 조건이 충족되면 폴링을 중지하고 싶을 수 있으므로 유용합니다. 또는 이러한 응답으로 다른 논리를 제공합니다.
어... 뭐?
폴링은 오류가 발생하기 쉽습니다. 특히 원격 서버에서 일부 API를 호출하는 함수를 호출할 때 그렇습니다. 서버 측의 네트워크 오류 또는 결함으로 인해 해당 호출 중 일부가 거부될 수 있습니다. 그러나 오류에 관계없이 폴링을 계속하고 싶을 때가 있습니다. 결과 호출이 실제 유효한 데이터를 반환할 수 있습니다. 특정 수의 연속 실패가 발생할 때만 폴링을 중지할 수 있어야 합니다.
꽃가루 매개자 🐝
나는 이러한 모든 문제 등을 해결하는 데 사용할 수 있는 작지만 바쁜 작은 모듈을 작성했습니다. 예, 우리는 다시 게을러질 수 있습니다! 가장 큰 장점:
그런 곳이 보이면 한번 가보세요! 그것이 당신을 위해 약간의 노력을 절약하기를 바랍니다.
인스피무어 / 수분 조절제
모든 기능을 폴링하는 경량 js 라이브러리. 노드 및 브라우저 호환.
BTW 피드백은 환영 이상입니다!
Reference
이 문제에 관하여(JS 폴링의 ABC), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/inspmoore/abc-of-polling-in-js-1dfd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)