2017-09-11 4 views
3

私は素早く書かれたネイティブのアプリを持っていますが、それは反応ネイティブを使っています。異なるネイティブコンテキストを異なるスレッドで実行することは可能ですか?

私はスクロールビューでアイテムを表示している最初の反応ネイティブビューを持っています。このスクロールビューでスクロールすると、いくつかの要素が表示されてレンダリングされます。

私は別の反応ネイティブのビューを持っています。これは500msごとにイベントのループを実行しており、十分に正確である必要があります。

import Editor from './src/components/Editor'; 
import Playback from './src/components/Playback'; 

AppRegistry.registerComponent('Editor',() => Editor); 
AppRegistry.registerComponent('Playback',() => Playback); 

最初のビューをスクロールすると、要素のレンダリングによって2番目のビューの処理が遅すぎることがあります。

2番目のビューのjavascriptコードが別のスレッドで実行される可能性があるので、最初のビューの影響を受けないかどうか疑問に思っていました。

これは可能ですか?

+0

ウェブワーカーは多分ですか? –

+0

@AlekseiMaide iOS上で反応するネイティブですが、ウェブワーカーが利用できるとは思われません.../ –

+0

http://caniuse.com/#search=webwork私は、 https://github.com/devfd/react-native-workers多分あなたはそれを利用することができます..... –

答えて

1

新しいbridgeオブジェクトをインスタンス化して、新しいJavaScriptコンテキスト(専用スレッド内に存在する)を作成する必要があります。次に、異なるブリッジオブジェクトを使用してRootViewをインスタンス化することができます。

+0

https://github.com/devfd/react-native-workersのソースコードを見て、確認していただきありがとうございます。 –

+1

素晴らしい!私はまた、別のブリッジをインスタンス化することは比較的高価で、メモリを消費するということに言及する必要があります。あなたはそれを行うのに十分な理由が必要です。 –

0

実際にはネイティブ側でTimer.scheduledTimerを使用していましたが、実行ループに追加するときにモードを変更して、スクロールビューが処理中であっても実行する必要がありました。だから私の問題は実際に反応ネイティブに関連していなかったsetTimeout、申し訳ありません!

関連する問題