React Native'de Ağır Hesaplamalar: Worker Thread Kullanımı
# React Native'de Ağır Hesaplamalar: Worker Thread Kullanımı
React Native'de fibonacci hesaplama, görüntü işleme veya veri analizi gibi ağır işlemler ana thread'i donduruyor. Kullanıcı arayüzü donuyor, animasyonlar kesilip gidiyor. Çözüm: Worker thread kullanmak.
Ana işlem dışında çalışacak bir dosya yarat:
1// workerCalculation.js2const fibonacci = (n) => {3if (n <= 1) return n;4return fibonacci(n - 1) + fibonacci(n - 2);5};67self.onmessage = (event) => {8const result = fibonacci(event.data);9self.postMessage({ result, status: 'complete' });10};1import { useEffect, useState } from 'react';2import { View, Text, TouchableOpacity } from 'react-native';34const CalculationScreen = () => {5const [result, setResult] = useState(null);6const [loading, setLoading] = useState(false);78const startHeavyCalculation = () => {9setLoading(true);1011// Web Worker (web ortamında)12const worker = new Worker('./workerCalculation.js');1314// Hesaplamayı başlat15worker.postMessage(42);1617// Sonucu dinle18worker.onmessage = (event) => {19setResult(event.data.result);20setLoading(false);21worker.terminate();22};23};2425return (26<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>27<TouchableOpacity onPress={startHeavyCalculation}>28<Text>{loading? 'Hesaplanıyor...': 'Başla'}</Text>29</TouchableOpacity>30{result && <Text>Sonuç: {result}</Text>}31</View>32);33};3435export default CalculationScreen;Native performans istiyorsan:
Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1// NativeModule.js (Java/Kotlin tarafında)2public class CalculationModule {3public static long fibonacci(int n) {4if (n <= 1) return n;5return fibonacci(n - 1) + fibonacci(n - 2);6}7}89// React Native tarafında10import { NativeModules } from 'react-native';11const { CalculationModule } = NativeModules;1213const result = await CalculationModule.fibonacci(42);14console.log('Sonuç:', result);Beklenen çıktı: `Sonuç: 267914296`
- Worker thread'i işlem bitince `terminate()` ile kapat.
- Paralel işlemler için birden fazla worker oluştur.
- Native modüller daha hızlı; ağır işlemler için tercih et.
bknz: [AI ile Kod Yazıyorsun Ama Öğrenmiyor musun?]()
2 yorum
çok ağır işlemler için worker yoluna gitmek mantıklı ama react native'de setup'ı biraz ağır geliyor bana.
setup karışık gelse de bir kez ayarladıktan sonra rahat oluyor, sonra hep copy paste.