gpt4 book ai didi

node.js - setInterval 中的函数等待其他进程函数结束 Node

转载 作者:太空宇宙 更新时间:2023-11-04 01:45:52 24 4
gpt4 key购买 nike

我的应用程序做了一些工作,然后对数据库进行查询。它每 3 秒收获一次,应用程序必须只有 1 个与数据库的事件连接,如果连接处于事件状态,则必须等待然后执行此操作,我已经尝试过:

var state = false;
let l = 0;
function sleep(ms) {
console.log('object');
l++;
return new Promise(resolve => setTimeout(resolve, ms));
}

async function lol(orderid) {

if (state == true) {
await sleep(1000 + l * 1000);
let k = await lol(orderid);
return k;
};

state = true;
let res = await getOrders(`(${orderid})`, 1500, 20)
state = false;
return res;
}


let orderid = 14136377;

setInterval(async () => {
let m = await lol(orderid++);
console.log(m[0]['json_build_object']['order']['orderid']);
}, 1000);

现在它正在查询排序后的ID,每次递增并输出它。这就是结果

enter image description here

条件 if (state == true || l >0 ) 不给出响应,所有间隔调用保持事件状态。正如您所看到的,有时它不是连续的。怎么让它连续呢?有没有更好的方法可以做到这一点?

最佳答案

如果认为这就足够了。

let state = false;
let data = [];

getorerids().then(res => {
if(state){
data.push(res);
}else {
state = true;
dbcall(res);
}
});

dbcall(ids)
.then(res =>{
dosmtwithids(res);
if(data[0]){
return dbcall(data.pop());
}else {
state = false;
}
});

dosmtwithids(){
.......
};

setInterval(getorerids, 3000);

关于node.js - setInterval 中的函数等待其他进程函数结束 Node ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51521330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com