gpt4 book ai didi

javascript - Angular 4 中可能存在竞争条件吗

转载 作者:行者123 更新时间:2023-11-28 17:42:58 25 4
gpt4 key购买 nike

我的 Angular 4 服务:

@Injectable()
export class MyService {

private myArray: string[] = [];

constructor() { }

private calculate(result): void {
myArray.length = 0;
// Do some calculations and add results in myArray
}

public invokeCallBack(callBack: Function) {
// the function callBack returns an observable
// Rest calls are done in the callBack function
callBack().subscribe(
(result) => {
// Rest call is finished
this.calculate(result);
}
);
}
}

其他组件多次调用invokeCallBack(callBack)。

如果同时完成 2 个(或更多)休息调用会发生什么?

1) this.calculate(result) 方法会同时调用 2 次吗?如果是这种情况,则 myArray 的状态可能不一致,因为同时进行了 2 次计算(=> 竞争条件)。怎么解决这个问题呢?

2) 或者 this.calculate(result) 总是被称为同步的?如果是这种情况,一次只能进行一次计算,因此 myArray 始终(保证)处于一致状态。

最佳答案

假设calculate中没有异步代码,该方法在再次调用之前将始终运行完成。

calculate 的 2 个独立“实例”不可能同时运行。

这是因为 JavaScript(在浏览器中)is single-threaded .

关于javascript - Angular 4 中可能存在竞争条件吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47484315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com