首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >锁定Javascript函数

锁定Javascript函数
EN

Stack Overflow用户
提问于 2019-02-18 19:22:00
回答 1查看 76关注 0票数 0

我在一个循环中对服务器进行异步调用。显然,它创建了一个竞争条件。下面是代码。

代码语言:javascript
复制
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的锁机制,我的代码会是什么样子:

代码语言:javascript
复制
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中实现类似的功能,如果可以,我该如何实现?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-18 21:01:41

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54746147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档