Angular 角度订阅和读/写相同的变量
我用的是角度7 我在x.component.ts文件中有一个全局向量,我有几个订阅,以便从服务器获取一些值 每次brwoser接收到一个值时,该值就会被插入到向量中,并且几个函数(和服务)会计算关于该向量的操作(有时向量会被传递到类似函数的参数) 我有一个疑问:我是否需要锁 我不希望向量“同时”通过两个函数进行读写Angular 角度订阅和读/写相同的变量,angular,typescript,Angular,Typescript,我用的是角度7 我在x.component.ts文件中有一个全局向量,我有几个订阅,以便从服务器获取一些值 每次brwoser接收到一个值时,该值就会被插入到向量中,并且几个函数(和服务)会计算关于该向量的操作(有时向量会被传递到类似函数的参数) 我有一个疑问:我是否需要锁 我不希望向量“同时”通过两个函数进行读写 我的意思是:我知道javaScript是单线程的,但我不希望为了执行另一个线程的操作而停止该线程,因为如果旧线程不再访问该变量,另一个线程的数据也已准备就绪。就我而言,您的代码中将有
我的意思是:我知道javaScript是单线程的,但我不希望为了执行另一个线程的操作而停止该线程,因为如果旧线程不再访问该变量,另一个线程的数据也已准备就绪。就我而言,您的代码中将有两种情况: 1-负责读/写的服务应该为每个向量实例化一次。所以,通过像下面这样限制您的服务可以做到这一点
@Injectable()
export class VectorUpdateService {
vector: Vector;
constructor(private vectorService: VectorService) {}
// read vector
fetchCachedVector(id: number) {
if (!this.vector) {
this.vector = this.vectorService.getVectorById(id);
}
return this.vector;
}
}
如需了解更多信息,请联系我们
你也可以这样做
2-处理与您所述相同的操作。据我所知,这种情况与JavaScript中的异步编程非常相似。它通过定义作业和作业队列来处理。你不必担心
我希望我能帮助你。将操作包装在承诺内