给网页端的RawRequest上了个锁,防止发生神奇的事情

This commit is contained in:
2023-12-17 05:03:51 +00:00
parent c696fa1396
commit 3b4ae7d013

View File

@ -20,17 +20,43 @@ socket.on('response', (msg) => {
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
let raw_request_lock = false;
async function acquireRawRequestLock() {
return new Promise((resolve) => {
const attemptAcquire = () => {
if (!raw_request_lock) {
raw_request_lock = true;
resolve();
} else {
setTimeout(attemptAcquire, 10);
}
};
attemptAcquire();
});
}
function releaseRawRequestLock() {
raw_request_lock = false;
}
async function RawRequest(raw_request) {
await acquireRawRequestLock();
try {
socket.emit('request', raw_request);
while(true)
{
if(__raw_response!=""){
while (true) {
if (__raw_response !== "") {
let response = __raw_response;
__raw_response = "";
return response;
}
await sleep(100);
}
} finally {
releaseRawRequestLock();
}
}
async function ShutDownWholeSystem()
{