javascript - NodeJS 承诺:我有竞争条件问题吗?
问题描述
我有一些在事件发生时运行的代码,并调用一个 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
您会明确地等待承诺在运行之前解决lockSelectedSpace
。你能提供一个你认为是竞争条件的例子吗?
推荐阅读
- android - 如何让 OnCompleteListener 在 Kotlin 中等待?
- api - Binance Websocket 深度通道对给定 ID 的更新过多
- python - 散景 categorical_bar_stacked
- php - 我该如何解决这个关于 webdriver 的错误?
- json - 将大对象序列化为 JSON 字符串
- prometheus - 普罗米修斯中的刮擦间隔和评估间隔
- javascript - 使用 jquery 返回搜索结果页面
- scala - 函数式缩放 - 如何避免可选映射的深度嵌套
- hyperledger-fabric - Kafka Hyperledger Fabric 每秒的交易量是多少
- mysql - SpringBoot Mysql 数据库无法为 DDL 执行打开 JDBC 连接