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密集型后台任务。工作人员在与主应用程序不同的线程中运行,因此它不会锁定应用程序。我不认为这是正确的解决方案,但它可以工作。 –