这是我的代码。
while(!pause && (tmp = sqls.pop())) {
pool.request().query(tmp.sql)
.then(rs => {
if (tmp.cnt !== rs.rowsAffected[0]) {
console.log('insert is not completive');
}
}).catch(error => {
console.log(tmp);
console.error(error);
sqls.push(tmp);
// If an TimeoutError occurred, pause the read stream
if(error.name === "TimeoutError") {
pause = true;
setTimeout(()=>{pause = false;}, 1000);
}
})
}
我想使用数据库查询回调函数来读取变量tmp
,并修改变量pause
。
但是如你所知,回调函数中的tmp对象是undefined
,而在查询之前它是{sql:" xxx",cnt:60}。(我试过调试并注销它),我也无法修改全局变量pause
。
我已经阅读了一些相关的问题,大多数解决方案都试图将变量作为回调函数的参数,但是我无法修改这个库代码,而且这个解决方案也无法修改gloabal变量。
还有一些关于使用windows
对象(用于浏览器)来引用变量的解决方案,但我不明白为什么回调函数可以访问windows
对象。我的代码只是在nodejs上运行的独立文件。
您是否知道如何在回调函数中读取和写入gloabal变量?