2
實際上我不太清楚,如何命名這個問題!原生反應:始終運行組件
我有一個反應原生的JS文件,從服務器獲取數據並將其與本地數據庫進行比較。我需要這個同時運行,我怎麼能實現呢?當應用程序啓動時,應該運行,改變視圖(導航到其他組件)不應該銷燬它,它應該仍然在運行。
任何解決方案?
實際上我不太清楚,如何命名這個問題!原生反應:始終運行組件
我有一個反應原生的JS文件,從服務器獲取數據並將其與本地數據庫進行比較。我需要這個同時運行,我怎麼能實現呢?當應用程序啓動時,應該運行,改變視圖(導航到其他組件)不應該銷燬它,它應該仍然在運行。
任何解決方案?
你正在解釋一種叫做: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);
如果它爲兩個實例打印相同的時間,這意味着我們有一個工作單例。
現在,您可以在單例內異步加載服務器數據,並執行您想要的任何操作。每次嘗試訪問單例類時,它都將是同一個實例,並且不會多次實例化。換句話說,它不會被破壞。
老實說,我沒有明白你的觀點。我找到了https://github.com/devfd/react-native-workers,不知道這是我在找什麼。順便說一句,謝謝你的回答。 – Ataomega
據我所知,你想要一個類的單個實例,並且你希望這個實例在應用程序的整個生命週期中保持活動狀態。這件事被稱爲單身人士。無論您重新實例化該類,該類中的任何屬性都將保持持久性。在你的情況下,你會在單例類中異步加載你的服務器數據,並且它會一直存在。 –
@Ataomega順便說一句,這些工作人員負責CPU密集型後臺任務。工作人員在與主應用程序不同的線程中運行,因此它不會鎖定應用程序。我不認爲這是正確的解決方案,但它可以工作。 –