我有一些在事件发生时运行的代码,并调用CPU密集型方法,该方法在可用的信息区域中查找并创建锁定/保持,然后锁定此空间

为了使此不阻塞的CPU密集型方法通过返回一个promise来异步运行,然后promise .then代码块使用lockSelectedSpace将该区域设置为锁定。

function eventCode(params){
  findFreeSpace(params).then((details)=>{
     lockSelectedSpace(details);
  });
}

function findFreeSpace(details){
   //cpu itensive operation here
   resolve({success:true});
}

function lockSelectedSpace(details){
  // lock the free space
}


我的问题是,lockSelectedSpace何时运行?何时findFreeSpace调用resolve时立即运行?或者有延迟吗?

我问是因为lockSelectedSpace在findFreeSpace上运行很重要,并且两个用户不可能锁定相同的空间

谢谢

最佳答案

lockSelectedSpace将在成功解析承诺后立即运行。当您将此函数放置在findFreeSpace函数内部时,您明确地在运行.then之前等待承诺解决。您能否提供一个您认为是比赛条件的示例?

关于javascript - NodeJS promise :我是否有竞争条件问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55604502/

10-12 15:10