2016-09-28 6 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를 많이 사용하는 백그라운드 작업을 수행합니다. 작업자는 기본 앱과 다른 스레드에서 실행되므로 앱을 잠그지 않습니다. 나는 그것이 적절한 해결책이라고 생각하지 않지만, 효과가있을 수 있습니다. –

관련 문제