我有一些在事件发生时运行的代码,并调用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/