2016-09-28 8 views
2

私は実際には、この質問の名前を付ける方法はわかりません!対応ネイティブ:常に実行中のコンポーネント

私は、サーバからのデータをフェッチしてローカルデータベースと比較する、反応ネイティブのJSファイルを持っています。私は同時にこれを実行する必要があります、どのように私はそれを達成することができますか?アプリケーションが起動すると、そのビューが実行され、ビューの変更(他のコンポーネントへのナビゲーション)はそれを破棄すべきではありません。

すべてのソリューションはありますか?

答えて

9

Singletonという名前のデザインパターンを説明しています。

は、ここでそれを行う方法は次のとおりです。

let instance = null; 

class Singleton{ 
    constructor() { 
     if(!instance){ 
       instance = this; 
     } 

     // to test whether we have singleton or not 
     this.time = new Date() 

     return instance; 
     } 
} 

テストシングルトン 上記のクラスでは、我々はシングルトン正常に動作していることを確認するために時間プロパティを定義しています。

let singleton = new Singleton() 
console.log(singleton.time); 

setTimeout(function(){ 
    let singleton = new Singleton(); 
    console.log(singleton.time); 
},4000); 

両方のインスタンスで同じ時刻が出力される場合は、シングルトンが動作していることを意味します。

これで、シングルトン内でサーバーデータを非同期に読み込み、それを使って何かしたいことができます。シングルトンクラスにアクセスしようとするたびに、同じインスタンスになり、複数回インスタンス化されません。つまり、破壊されません。

出典:http://amanvirk.me/singleton-classes-in-es6/

+0

正直、私はあなたのポイントを取得しませんでした。私はhttps://github.com/devfd/react-native-workersを見つけましたが、それが私が探しているものかどうかはわかりません。 Btw、あなたの答えをありがとう。 – Ataomega

+0

私が理解する限り、あなたはクラスの単一のインスタンスを持ちたいと思っていました。このインスタンスをアプリケーションの全ライフサイクルにわたって生き生きとしたいと思っています。このことをシングルトンといいます。このクラス内のプロパティはどれくらい再インスタンス化しても永続的です。あなたのケースでは、シングルトンクラス内でサーバーデータを非同期的にロードします。 –

+0

@Ataomega BTWでは、ワーカーはCPU集約的なバックグラウンドタスク用です。ワーカーはメインアプリとは別のスレッドで実行されるため、アプリをロックしません。私はそれが適切な解決策だとは思わないが、うまくいく可能性がある。 –

関連する問題