typescript - Angular abonner og les/skrive samme variabel
Jeg bruker Angular 7.
Jeg har en global vektor i x.component.ts-filen, og jeg har flere abonnementer for å få noen verdier fra serveren.
Hver gang nettleseren mottar en verdi, blir verdien satt inn i vektoren, og flere funksjoner (og tjenester) utfører beregninger med vektoren (noen ganger blir vektoren sendt som parameter til en funksjon).
Jeg har et spørsmål: Jeg trenger å sette noen låser eller ikke?
Jeg ønsker ikke at vektoren skal leses og skrives av to funksjoner «på samme tid».
Jeg mener: Jeg vet at JavaScript er en-trådet, men jeg ønsker ikke at den tråden skal stoppe for å utføre andre operasjoner fordi andre data også er klare, selv om den gamle tråden ikke lenger bruker denne variabelen.
Svar #1
Så vidt jeg er bekymret, ville det være to scenarier i koden din:
1- Tjenesten, som er ansvarlig for å lese/skrive, bør instansieres en gang for hver vektor. Så ved å begrense tjenesten din som vist nedenfor kan det gjøres
@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;
}
}
For mer info, flere tjenesteinstanser (sandboxing) kan være nyttig.
Du kan også gjøre det ved hjelp av Singleton-designmønsteret.
2- Håndtering av de samme operasjonene som du nevnte. Så vidt jeg vet, er denne saken veldig lik asynkron programmering i JavaScript. Det håndteres ved å definere en jobb og en jobbkø. Du trenger ikke å bekymre deg for det.
Jeg håper jeg kunne hjelpe deg.
