Nodejs回调函数读写全局变量

时间:2017-12-29 03:41:28

标签: javascript node.js callback

这是我的代码。

            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变量?

0 个答案:

没有答案