React-Native 타이머 구현 방법 타이머
웹 개발에서는 일반적으로 setTimeout 및 setInterval 함수를 사용하여 타이머 함수를 사용해야 합니다. 이번 글에서는 주로 React-Native에서 Timer의 구현 코드를 소개하고 있는데, 에디터가 꽤 괜찮다고 생각해서 지금부터 공유하고 참고용으로 올려보겠습니다. 편집자를 따라 살펴보겠습니다. 모두에게 도움이 되기를 바랍니다.
그럼 ReactNative도 타이머 기능을 제공하나요? 대답은 '예'입니다.
먼저 공식 홈페이지에 나와 있는 내용을 살펴보겠습니다.
타이머는 애플리케이션에서 매우 중요한 부분입니다. React Native는 브라우저와 일치하는 타이머를 구현합니다.
제공되는 메소드는 다음과 같습니다:
setTimeout,clearTimeout
setInterval,clearInterval
setImmediate,clearImmediate
-
requestAnimationFrame, cancelAnimationFrame
setTimeout(fn, 1000) 및 setInterval (fn ,1000)
은 웹에서의 의미와 동일합니다. 전자는 1000밀리초의 지연 후에 fn 메서드를 실행한다는 의미이고, 후자는 1000밀리초마다 fn 메서드를 실행한다는 의미입니다.
requestAnimationFrame(fn)은 setTimeout(fn, 0)과 다릅니다. 전자는 각 프레임 새로 고침 후에 한 번 실행되는 반면 후자는 최대한 빠르게 실행됩니다(iPhone5S에서는 초당 1000회 이상 가능).
setImmediate는 일괄 응답 데이터를 네이티브로 보내기 직전에 현재 JavaScript 실행 블록의 끝에서 실행됩니다. 참고로 setImmediate의 콜백 함수에서 setImmediate를 실행하면 호출 전 네이티브 코드를 기다리지 않고 바로 실행된다는 점에 유의하세요.
Promise 구현에서는 setImmediate를 사용하여 비동기 호출을 수행합니다.
InteractionManager(Interaction Manager)
네이티브 애플리케이션이 그렇게 매끄럽게 느껴지는 중요한 이유는 상호작용과 애니메이션 중에 과도한 작업을 피하는 것입니다. React Native에서는 JavaScript 실행 스레드가 하나만 있기 때문에 현재 제한적입니다. 그러나 InteractionManager를 사용하면 무거운 작업을 수행하기 전에 모든 상호 작용과 애니메이션이 처리되었는지 확인할 수 있습니다.
응용 프로그램은 다음 코드를 통해 상호 작용이 끝난 후 실행될 작업을 예약할 수 있습니다.
InteractionManager.runAfterInteractions(() => { // ...需要长时间同步执行的任务... });
이를 이전의 여러 작업 예약 방법과 비교해 보겠습니다.
requestAnimationFrame(): 코드를 실행하는 데 사용됩니다. 일정 기간 동안 뷰 애니메이션을 제어하는
setImmediate/setTimeout/setInterval(): 나중에 코드를 실행하세요. 이로 인해 현재 진행 중인 애니메이션이 지연될 수 있습니다.
runAfterInteractions(): 현재 진행 중인 애니메이션을 지연시키지 않고 나중에 코드를 실행합니다.
터치 처리 시스템은 하나 이상의 진행 중인 터치 작업을 '상호작용'으로 식별하고 모든 터치 작업이 종료되거나 취소될 때까지 runAfterInteractions()의 콜백 함수 실행을 지연합니다.
InteractionManager를 사용하면 앱이 애니메이션을 등록하여 애니메이션이 시작될 때 상호 작용 "핸들"을 생성하고 끝날 때 이를 지울 수도 있습니다.
var handle = InteractionManager.createInteractionHandle(); // 执行动画... (`runAfterInteractions`中的任务现在开始排队等候) // 在动画完成之后 InteractionManager.clearInteractionHandle(handle); // 在所有句柄都清除之后,现在开始依序执行队列中的任务
TimerMixin
우리는 React Native 애플리케이션에서 많은 치명적인 오류(충돌)가 타이머와 관련되어 있음을 발견했습니다. 특히 구성요소가 마운트 해제된 후에도 타이머는 계속 활성화됩니다. 이 문제를 해결하기 위해 TimerMixin을 도입했습니다. TimerMixin을 컴포넌트에 도입하면 원래 setTimeout(fn, 500)을 this.setTimeout(fn, 500)으로 변경할 수 있습니다(이것을 앞에 추가하면 됩니다). 그런 다음 컴포넌트가 언로드되면 모든 타이머 이벤트도 올바르게 지워집니다.
이 라이브러리는 React Native와 함께 출시되지 않습니다. 별도로 설치하려면 프로젝트 폴더에 npm i React-timer-mixin --save 를 입력해야 합니다.
var TimerMixin = require('react-timer-mixin'); var Component = React.createClass({ mixins: [TimerMixin], componentDidMount: function() { this.setTimeout( () => { console.log('这样我就不会导致内存泄露!'); }, 500 ); } });
setTimeout(...) 대신 React-timer-mixin에서 제공하는 this.setTimeout(...)을 사용하는 것이 좋습니다. 이렇게 하면 디버깅하기 어려운 많은 버그를 피할 수 있습니다.
주석: Mixin은 ES5 구문에 속하며 ES6 코드의 경우 Mixin을 직접 사용할 수 없습니다.
프로젝트가 ES6 코드로 작성되고 타이머를 사용하는 경우 구성 요소를 마운트 해제할 때 사용된 모든 타이머를 지우는 것(clearTimeout/clearInterval)만 기억하면 됩니다.
그러면 TimerMixin과 동일한 효과를 얻을 수도 있습니다. 예:
import React,{ Component } from 'react-native'; export default class Hello extends Component { componentDidMount() { this.timer = setTimeout( () => { console.log('把一个定时器的引用挂在this上'); }, 500 ); } componentWillUnmount() { // 如果存在this.timer,则使用clearTimeout清空。 // 如果你使用多个timer,那么用多个变量,或者用个数组来保存引用,然后逐个clear this.timer && clearTimeout(this.timer); } };
참고:
1. 타이머 기능은 es6에서 사용하는 경우 구성 요소를 마운트 해제할 때 사용된 모든 타이머를 삭제(clearTimeout/clearInterval)해야 한다는 점을 기억해야 합니다.
2. 타이머를 사용하여 문자 메시지 카운트다운 등 몇 가지 일반적인 기능을 구현할 수 있습니다.
3. 지연된 실행이 필요한 일부 특수 시나리오에도 타이머를 사용할 수 있습니다. 예를 들어 현재 RN에서 제공하는 가져오기는 제공되지 않습니다. 클라이언트가 백엔드에서 인터페이스를 요청할 때 인터페이스 시간이 초과되면(백엔드 서비스에서 설정한 시간 초과는 10초임) RN 인터페이스는 계속 로드되고 중단될 수 없습니다. 그러면 이때 클라이언트가 보낸 요청 시간이 특정 값(5초)보다 크면 요청이 실패한 것으로 직접 간주합니다.
4. 오늘은 목록 페이지가 다음 페이지를 로드할 때 인터페이스가 빠르게 응답하면 로딩 효과가 나타나지 않는 시나리오도 발견했습니다. 500밀리초 지연. ㅋㅋㅋ...
관련 추천:
jQuery 섹터 타이머 플러그인 파이타이머 사용법 공유
위 내용은 React-Native 타이머 구현 방법 타이머의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











React Native 버전을 변경하는 방법: 1. React Native 프로젝트 디렉토리에 들어가서 명령줄에 "react-native --version"을 입력합니다. 2. npm 패키지에서 관리하는 React Native 버전을 확인합니다. .json" 파일에서 종속성 필드를 수정하고 "react-native" 버전을 대상 버전으로 변경합니다.

iPhone 카메라에서 타이머를 얼마나 오래 설정할 수 있나요? iPhone 카메라 앱의 타이머 옵션에 액세스하면 3초(3초)와 10초(10초)의 두 가지 모드 중에서 선택할 수 있는 옵션이 제공됩니다. 첫 번째 옵션을 사용하면 iPhone을 들고 전면 또는 후면 카메라로 빠르게 셀카를 찍을 수 있습니다. 두 번째 옵션은 멀리서 아이폰을 삼각대에 장착해 단체 사진이나 셀카를 찍을 수 있는 장면에서 유용하다. iPhone 카메라에서 타이머를 설정하는 방법 iPhone 카메라에서 타이머를 설정하는 것은 매우 간단한 과정이지만, 정확한 수행 방법은 사용 중인 iPhone 모델에 따라 다릅니다.

타이머 표현식은 작업의 실행 계획을 정의하는 데 사용됩니다. 타이머 표현은 "주어진 시간 간격 후에 작업을 실행"하는 모델을 기반으로 합니다. 표현식은 일반적으로 초기 지연과 시간 간격의 두 부분으로 구성됩니다.

Workerman 문서에서 타이머 기능을 구현하는 방법 Workerman은 타이머 기능을 포함한 다양한 기능을 제공하는 강력한 PHP 비동기 네트워크 통신 프레임워크입니다. 타이머를 사용하여 지정된 시간 간격 내에서 코드를 실행합니다. 이는 예약된 작업 및 폴링과 같은 애플리케이션 시나리오에 매우 적합합니다. 다음으로는 Workerman에서 타이머 기능을 구현하는 방법을 자세히 소개하고 구체적인 코드 예시를 제공하겠습니다. 1단계: Workerman 설치 먼저 Worker를 설치해야 합니다.

Java 타이머: 매일 예약된 실행 작업을 설정하는 방법은 무엇입니까? 일상적인 Java 개발에서 우리는 매일 정기적으로 특정 작업을 수행해야 하는 경우가 종종 있습니다. 예를 들어 매일 오전 1시에 데이터 백업 작업을 수행하거나 매일 오후 8시에 매일 이메일을 보냅니다. 따라서 Java에서는 타이머를 사용하여 이러한 기능을 달성할 수 있습니다. Java는 다양한 타이머 구현 방법을 제공합니다. 이 기사에서는 Timer와 ScheduledExecutorService를 기반으로 하는 두 가지 설정 방법을 소개합니다.

타이머의 작동 원리는 하드웨어 타이머와 소프트웨어 타이머의 두 가지 유형으로 나눌 수 있습니다. 하드웨어 타이머의 작동 원리는 클럭 신호 소스가 타이머의 기준으로 안정적인 클럭 신호를 제공한다는 것입니다. 카운터는 미리 설정된 값부터 카운트를 시작하고 클럭 신호가 도착할 때마다 증가합니다. 카운터가 미리 설정된 값에 도달하면 타이머는 인터럽트 신호를 트리거하여 해당 인터럽트 서비스 루틴을 처리하도록 인터럽트 컨트롤러에 알립니다. 인터럽트 서비스 루틴에서는 미리 정해진 몇 가지 작업을 수행할 수 있습니다. 소프트웨어 타이머의 작동 원리는 프로그래밍 언어나 시스템 등에서 제공하는 라이브러리 기능이나 시스템 호출을 통해 구현됩니다.

Java 타이머: 월별 예약 실행 작업을 설정하는 방법은 무엇입니까? 소개: 개발 과정에서 우리는 월별 통계 데이터 업데이트, 정기적인 보고서 전송 등 월별 작업 실행이 필요한 시나리오를 자주 접하게 됩니다. Java는 다양한 타이머 구현 방법을 제공합니다. 이 기사에서는 Java 타이머를 사용하여 월별 예약 실행 작업을 구현하는 방법을 소개하고 특정 코드 예제를 제공합니다. 1. 월별 예약 작업을 구현하려면 Timer 클래스를 사용하세요. Timer 클래스는 Java에서 제공하는 가장 기본적인 타이머 클래스로 간단한 예약 작업을 구현할 수 있습니다.

Go 언어 문서의 time.NewTimer 함수를 마스터하여 원샷 타이머를 구현하고 특정 코드 예제를 첨부하세요. 시간은 우리 삶의 기준이며 타이머는 프로그래밍에서 가장 일반적으로 사용되는 도구 중 하나입니다. Go 언어에서는 time 패키지를 사용하여 시간 관련 작업을 처리할 수 있으며 NewTimer 함수를 사용하여 원샷 타이머를 만들 수 있습니다. 이 기사에서는 NewTimer 함수를 사용하여 간단한 원샷 타이머를 구현하는 방법을 소개하고 특정 코드 예제를 첨부합니다. Go 언어에서는 팀
