gpt4 book ai didi

javascript - 锁定 Javascript 函数

转载 作者:行者123 更新时间:2023-12-03 00:10:41 25 4
gpt4 key购买 nike

我正在循环中对服务器进行异步调用。显然,它创造了竞争条件。这是代码。

for (let i = 0; i < arr.length; i++) {
this.service.execute(arr[i]).pipe(takeUntil(this.ngUnsubscribe)).subscribe(response => {

this.updateData(response); // Avoid race-condition here
}, error => {
//
});
}

我需要一种机制来避免竞争条件。但同时我不想链接异步调用(我希望它们并行工作,只有 updateData 函数调用应该同步。)。如果我可以使用类似 Python 的锁定机制,我的代码将如下所示:

for (let i = 0; i < arr.length; i++) {
this.service.execute(arr[i]).pipe(takeUntil(this.ngUnsubscribe)).subscribe(response => {
// Assume lock is defined
this.lock.acquire();
this.updateData(response); // Avoid race-condition here
this.lock.release();

}, error => {
//
});
}

从上面的代码可以清楚地看到,只有 updateData 的调用在相互等待,而不是对服务器的异步调用。是否有可能在 Javascript 中实现类似的功能,如果可以的话我该怎么做?

最佳答案

Javascript execution is always single-threaded ,因此除非您的 updateData 函数本身包含异步调用,否则不存在竞争条件。

关于javascript - 锁定 Javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54746147/

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