更新 'SrcJyDrpy.js'

master
src48597962 6 months ago
parent 2fd14a83d3
commit 535c4a8be4
  1. 35
      SrcJyDrpy.js

@ -224,7 +224,7 @@ function getext(jkdata) {
}
return '';
}
/*
function get(jkdata) {
let key = jkdata.key || jkdata.name;
let ext = jkdata.key?jkdata.ext:getext(jkdata);
@ -248,6 +248,39 @@ function get(jkdata) {
return drpy;
}, this).call();
}
*/
const locks = new Map(); // 用于存储每个jkdata的锁
function get(jkdata) {
let key = jkdata.key || jkdata.name;
let ext = jkdata.key ? jkdata.ext : getext(jkdata);
let sdata = { key: key, ext: ext };
// 获取锁
let lock = locks.get(key);
if (!lock) {
lock = Promise.resolve();
locks.set(key, lock);
}
return lock.then(() => {
// 在这里执行你的逻辑
return sync(() => {
if (drpyMap.has(key)) {
//log("取缓存" + key);
return drpyMap.get(key);
}
if (drpyMap.size >= 5) {
//log("只保持最大5个drpy环境");
del(Array.from(drpyMap.keys()).at(0));
}
let drpy = createNewDrpy(sdata);
return drpy;
}, this).call().finally(() => {
// 释放锁
locks.delete(key);
});
});
}
function put(key, drpy) {
sync(() => drpyMap.set(key, drpy), this).call();

Loading…
Cancel
Save