Heim Web-Frontend js-Tutorial So implementieren Sie den React-Native-Timer Timer

So implementieren Sie den React-Native-Timer Timer

Jan 27, 2018 pm 04:54 PM
react-native timer 定时器

In der Webentwicklung müssen wir normalerweise die Timer-Funktion verwenden, indem wir die Funktionen setTimeout und setInterval verwenden. In diesem Artikel wird hauptsächlich der Implementierungscode des Timers Timer in React-Native vorgestellt. Der Herausgeber findet ihn recht gut, daher werde ich ihn jetzt mit Ihnen teilen und als Referenz geben. Folgen wir dem Herausgeber und schauen wir uns das an. Ich hoffe, es kann allen helfen.

Bietet ReactNative also auch die Timer-Funktion? Die Antwort ist ja.

Schauen wir uns zunächst an, was auf der offiziellen Website steht.

Timer ist ein sehr wichtiger Teil einer Anwendung. React Native implementiert einen Timer, der mit dem Browser konsistent ist.

Die bereitgestellten Methoden lauten wie folgt:

  • setTimeout, clearTimeout

  • setInterval, clearInterval

  • setImmediate, clearImmediate

  • requestAnimationFrame, cancelAnimationFrame

setTimeout (fn, 1000) und setInterval (fn, 1000 )

hat die gleiche Bedeutung wie im Web. Ersteres bedeutet, die fn-Methode nach einer Verzögerung von 1000 Millisekunden auszuführen, und letzteres bedeutet, die fn-Methode alle 1000 Millisekunden auszuführen.

requestAnimationFrame(fn) unterscheidet sich von setTimeout(fn, 0). Ersteres wird einmal nach jeder Frame-Aktualisierung ausgeführt, während letzteres so schnell wie möglich ausgeführt wird (möglicherweise mehr als 1000 Mal pro Sekunde). iPhone5S).

setImmediate wird am Ende des aktuellen JavaScript-Ausführungsblocks ausgeführt, kurz bevor Batch-Antwortdaten an native gesendet werden. Beachten Sie, dass, wenn Sie setImmediate in der Rückruffunktion von setImmediate ausführen, diese sofort ausgeführt wird, ohne vor dem Aufruf auf den nativen Code warten zu müssen.

Die Implementierung von Promise verwendet setImmediate, um asynchrone Aufrufe durchzuführen.

InteractionManager (Interaction Manager)

Ein wichtiger Grund, warum sich native Anwendungen so reibungslos anfühlen, besteht darin, schwere Vorgänge bei Interaktionen und Animationen zu vermeiden. Bei React Native sind wir derzeit eingeschränkt, da wir nur einen JavaScript-Ausführungsthread haben. Sie können jedoch den InteractionManager verwenden, um sicherzustellen, dass alle Interaktionen und Animationen verarbeitet wurden, bevor Sie die schwere Arbeit erledigen.

Die Anwendung kann eine Aufgabe planen, die nach Beendigung der Interaktion ausgeführt werden soll, indem sie den folgenden Code verwendet:


InteractionManager.runAfterInteractions(() => { 
  // ...需要长时间同步执行的任务... 
});
Nach dem Login kopieren

Vergleichen wir es mit mehreren früheren Methoden zur Aufgabenplanung:

requestAnimationFrame(): wird zum Ausführen von Code verwendet, der die Ansichtsanimation innerhalb eines Zeitraums

setImmediate/setTimeout steuert /setInterval(): Code später ausführen. Beachten Sie, dass dies die aktuell laufende Animation verzögern kann.

runAfterInteractions(): Führt den Code später aus, ohne die aktuell laufende Animation zu verzögern.
Das Touch-Verarbeitungssystem identifiziert einen oder mehrere laufende Touch-Vorgänge als „Interaktion“ und verzögert die Ausführung der Rückruffunktion von runAfterInteractions(), bis alle Touch-Vorgänge beendet oder abgebrochen wurden.

InteractionManager ermöglicht es Anwendungen auch, Animationen zu registrieren, ein Interaktions-„Handle“ zu erstellen, wenn die Animation beginnt, und es dann zu löschen, wenn sie endet.


var handle = InteractionManager.createInteractionHandle(); 
// 执行动画... (`runAfterInteractions`中的任务现在开始排队等候) 
// 在动画完成之后 
InteractionManager.clearInteractionHandle(handle); 
// 在所有句柄都清除之后,现在开始依序执行队列中的任务
Nach dem Login kopieren

TimerMixin

Wir haben festgestellt, dass viele schwerwiegende Fehler (Crashbacks) in React Native-Anwendungen damit zusammenhängen Timing bezogen auf das Gerät. Insbesondere ist der Timer weiterhin aktiviert, nachdem eine Komponente nicht gemountet wurde. Um dieses Problem zu lösen, haben wir TimerMixin eingeführt. Wenn Sie TimerMixin in die Komponente einführen, können Sie Ihr ursprüngliches setTimeout(fn, 500) in this.setTimeout(fn, 500) ändern (fügen Sie einfach Folgendes hinzu.) und dann, wenn Ihre Komponente entladen wird, alle Das Timer-Ereignis wird auch korrekt gelöscht werden.

Diese Bibliothek wird nicht mit React Native veröffentlicht. Um es separat zu installieren, müssen Sie npm i reagieren-timer-mixin --save im Projektordner eingeben.


var TimerMixin = require('react-timer-mixin'); 
 
var Component = React.createClass({ 
 mixins: [TimerMixin], 
 componentDidMount: function() { 
  this.setTimeout( 
   () => { console.log('这样我就不会导致内存泄露!'); }, 
   500 
  ); 
 } 
});
Nach dem Login kopieren

Wir empfehlen dringend, dass Sie this.setTimeout(...) verwenden, das von React-Timer-Mixin bereitgestellt wird, anstelle von setTimeout(...). Dadurch können viele Fehler vermieden werden, die schwer zu beheben sind.

Anmerkung: Mixin gehört zur ES5-Syntax. Für ES6-Code kann Mixin nicht direkt verwendet werden.

Wenn Ihr Projekt in ES6-Code geschrieben ist und Timer verwendet, müssen Sie beim Aushängen der Komponente nur daran denken, alle verwendeten Timer zu löschen (clearTimeout/clearInterval).

Dann können Sie auch den gleichen Effekt wie TimerMixin erzielen. Zum Beispiel:


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); 
 } 
};
Nach dem Login kopieren

Hinweis:

1. Die Timer-Funktion ist relativ einfach. Wenn Sie sie in es6 verwenden, müssen Sie daran denken, alle verwendeten Timer zu löschen (clearTimeout/clearInterval).
2. Sie können Timer verwenden, um einige allgemeine Funktionen zu implementieren: z. B. Countdowns für Textnachrichten usw.
3. Sie können Timer auch für einige spezielle Szenarien verwenden, die eine verzögerte Ausführung erfordern RN bietet keine Zeitüberschreitungseinstellung. Wenn der Client eine Schnittstelle im Backend anfordert und die Schnittstelle eine Zeitüberschreitung erfährt (die vom Backend-Dienst festgelegte Zeitüberschreitung beträgt 10 Sekunden), wird die RN-Schnittstelle immer geladen und kann nicht abgebrochen werden. Dann können wir den Timer zu diesem Zeitpunkt geschickt nutzen. Wenn die Zeit der vom Client gesendeten Anfrage einen bestimmten Wert (5 Sekunden) überschreitet, betrachten wir die Anfrage direkt als fehlgeschlagen.
4. Heute habe ich auch ein Szenario gefunden, in dem setTimeout verwendet wird, wenn die Schnittstelle schnell reagiert. Zu diesem Zeitpunkt gibt es keinen Ladeeffekt. Stellen Sie eine Verzögerung von 500 Millisekunden ein, haha....

Verwandte Empfehlungen:

Erklären Sie, wie Sie das jQuery-Sektor-Timer-Plug-in Pietimer verwenden

C# Über die Lösung des Timer-Timer-Wiedereintrittsproblems

php-Timer-Seiten-Laufzeitüberwachungsklasse

Das obige ist der detaillierte Inhalt vonSo implementieren Sie den React-Native-Timer Timer. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So ändern Sie die Version von React Native So ändern Sie die Version von React Native Jan 19, 2023 pm 02:31 PM

So ändern Sie die Version von React Native: 1. Geben Sie das React Native-Projektverzeichnis ein und geben Sie „react-native --version“ in die Befehlszeile ein. 2. Überprüfen Sie die vom npm-Paket verwaltete React Native-Version .json“-Datei im Projekt, ändern Sie das Abhängigkeitsfeld und ändern Sie die „react-native“-Version in die Zielversion.

So stellen Sie einen Timer für Ihre iPhone-Kamera ein So stellen Sie einen Timer für Ihre iPhone-Kamera ein Apr 14, 2023 am 10:43 AM

Wie lange können Sie einen Timer für Ihre iPhone-Kamera einstellen? Wenn Sie in der Kamera-App des iPhones auf die Timer-Optionen zugreifen, haben Sie die Möglichkeit, zwischen zwei Modi zu wählen: 3 Sekunden (3s) und 10 Sekunden (10s). Mit der ersten Option können Sie ein schnelles Selfie mit der Vorder- oder Rückkamera machen, während Sie Ihr iPhone halten. Die zweite Option ist in Szenen nützlich, in denen Sie Ihr iPhone aus einiger Entfernung auf einem Stativ montieren können, um Gruppenfotos oder Selfies anzuklicken. So stellen Sie einen Timer für eine iPhone-Kamera ein Das Einstellen eines Timers für eine iPhone-Kamera ist zwar ein recht einfacher Vorgang, die Vorgehensweise variiert jedoch je nach verwendetem iPhone-Modell.

Was ist ein Java-Timer-Ausdruck? Was ist ein Java-Timer-Ausdruck? Dec 27, 2023 pm 05:06 PM

Der Timer-Ausdruck wird verwendet, um den Ausführungsplan der Aufgabe zu definieren. Der Ausdruck des Timers basiert auf dem Modell „Eine Aufgabe nach einem bestimmten Zeitintervall ausführen“. Der Ausdruck besteht normalerweise aus zwei Teilen: einer anfänglichen Verzögerung und einem Zeitintervall.

So implementieren Sie die Timer-Funktion im Workerman-Dokument So implementieren Sie die Timer-Funktion im Workerman-Dokument Nov 08, 2023 pm 05:06 PM

So implementieren Sie die Timer-Funktion im Workerman-Dokument Workerman ist ein leistungsstarkes PHP-Framework für die asynchrone Netzwerkkommunikation, das eine Fülle von Funktionen bereitstellt, einschließlich der Timer-Funktion. Verwenden Sie Timer, um Code innerhalb bestimmter Zeitintervalle auszuführen. Dies eignet sich sehr gut für Anwendungsszenarien wie geplante Aufgaben und Abfragen. Als nächstes werde ich detailliert vorstellen, wie die Timer-Funktion in Workerman implementiert wird, und spezifische Codebeispiele bereitstellen. Schritt 1: Workerman installieren Zuerst müssen wir Worker installieren

Wie stelle ich einen Timer für die tägliche Ausführung geplanter Aufgaben in Java ein? Wie stelle ich einen Timer für die tägliche Ausführung geplanter Aufgaben in Java ein? Dec 27, 2023 am 11:10 AM

Java-Timer: Wie stelle ich jeden Tag eine geplante Ausführungsaufgabe ein? Bei der täglichen Java-Entwicklung besteht häufig die Notwendigkeit, jeden Tag regelmäßig eine bestimmte Aufgabe auszuführen. Führen Sie beispielsweise jeden Tag um 1 Uhr eine Datensicherungsaufgabe durch oder senden Sie jeden Tag um 20 Uhr eine E-Mail usw. In Java können wir also Timer verwenden, um eine solche Funktion zu erreichen. Java bietet eine Vielzahl von Timer-Implementierungsmethoden. In diesem Artikel werden zwei Methoden vorgestellt, die auf Timer und ScheduledExecutorService basieren.

Wie funktioniert ein Timer? Wie funktioniert ein Timer? Aug 16, 2023 pm 02:18 PM

Das Funktionsprinzip von Timern kann in zwei Typen unterteilt werden: Hardware-Timer und Software-Timer. Das Funktionsprinzip des Hardware-Timers besteht darin, dass die Taktsignalquelle ein stabiles Taktsignal als Referenz für den Timer bereitstellt. Der Zähler beginnt mit dem Zählen ab einem voreingestellten Wert und wird jedes Mal erhöht, wenn das Taktsignal eintrifft. Wenn der Zähler den voreingestellten Wert erreicht, löst der Timer ein Interrupt-Signal aus, um den Interrupt-Controller zu benachrichtigen, die entsprechende Interrupt-Serviceroutine zu verarbeiten. In der Interrupt-Serviceroutine können einige vorgegebene Vorgänge ausgeführt werden. Das Funktionsprinzip des Software-Timers wird durch Bibliotheksfunktionen oder Systemaufrufe implementiert, die von der Programmiersprache oder dem System usw. bereitgestellt werden.

Wie richte ich geplante monatliche Aufgaben in Java ein? Wie richte ich geplante monatliche Aufgaben in Java ein? Jan 11, 2024 pm 04:50 PM

Java-Timer: Wie stelle ich eine monatlich geplante Ausführungsaufgabe ein? Einführung: In der Entwicklung stoßen wir häufig auf Szenarien, die eine monatliche Ausführung von Aufgaben erfordern, z. B. die monatliche Aktualisierung statistischer Daten, das regelmäßige Versenden von Berichten usw. Java bietet eine Vielzahl von Timer-Implementierungsmethoden. In diesem Artikel wird erläutert, wie Sie mit Java-Timern monatlich geplante Ausführungsaufgaben implementieren, und es werden spezifische Codebeispiele bereitgestellt. 1. Verwenden Sie die Timer-Klasse, um monatlich geplante Aufgaben zu implementieren. Die Timer-Klasse ist die grundlegendste von Java bereitgestellte Timer-Klasse, mit der einfache geplante Aufgaben implementiert werden können.

Beherrschen Sie die Funktion time.NewTimer in der Go-Sprachdokumentation, um einen einzelnen Timer zu implementieren Beherrschen Sie die Funktion time.NewTimer in der Go-Sprachdokumentation, um einen einzelnen Timer zu implementieren Nov 03, 2023 pm 02:19 PM

Beherrschen Sie die Funktion time.NewTimer in der Go-Sprachdokumentation, um einen One-Shot-Timer zu implementieren, und fügen Sie spezifische Codebeispiele hinzu. Zeit ist der Maßstab unseres Lebens und Timer sind eines der am häufigsten verwendeten Werkzeuge beim Programmieren. In der Go-Sprache können wir das Zeitpaket verwenden, um zeitbezogene Vorgänge abzuwickeln, und die NewTimer-Funktion kann zum Erstellen eines One-Shot-Timers verwendet werden. In diesem Artikel wird erläutert, wie Sie mithilfe der NewTimer-Funktion einen einfachen One-Shot-Timer implementieren und spezifische Codebeispiele anhängen. In Go-Sprache, Tim

See all articles