我的应用程序做了一些工作,然后查询数据库。它每3秒收割一次,该应用程序必须只有1个与db的活动连接,如果连接处于活动状态,则必须等待,然后这样做,我已经尝试过:
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巫婆并输出它。这就是结果
条件if (state == true || l >0 )
不响应,所有间隔呼叫均保持有效。
如您所见,有时它不是连续的。如何使其连续?
有没有更好的方法可以做到这一点?
答案 0 :(得分: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);