我正在Node.js中使用以下代码来使用Promise调用数据库查询。那部分工作正常。我正在尝试“暂停”脚本执行,直到数据库查询完成为止……这就是导致问题的原因。
我的代码:
var _startup = 1; //toggle to check database on web server reboots...
var isPaused = 1; //toggle to 'delay' database call function...
const db = require('./routes/queries');
app.get('/lookup', function (req, res) {
if (_startup === 1) {
isPaused = 1;
_line_update(); //create/update member status arrays...
//'delay' until '_line_update()' has completed...
function waitForIt(){
if (isPaused === 1) {
setTimeout(function(){waitForIt()},100);
} else {
console.log("DATABASE CALL COMPLETED...");
console.log(lineup);
console.log(picture);
console.log(present);
};
}
_startup = 0; //toggle 'off'
}
});
function _line_update() {
lineup = [];
picture = [];
present = []; //create an 'empty' array EACH CALL...
//**Query PostGres database...using a promise
db.getMembers()
.then(function(value) {
console.log('Async success!', value);
console.log('length of value passed from database query: ' + value.length);
//...DO STUFF HERE TO POPULATE ARRAYS ('lineup', 'picture', 'present')
isPaused = 0;
console.log("isPaused at function call ending: " + isPaused);
})
.catch(function(err) {
console.log('Caught an error!', err);
});
}
在这里可以看到控制台中的输出。最初的“异步成功!”根据需要打印,然后打印对象的输出(由数据库调用返回)。另外,当'resolved'(.then)语句完成时,我看到'isPaused'变量被更改为“ 0”,因为它应该...但是一切似乎都挂起了...我看不到我的“数据库调用已完成”的所有日志打印输出以及应该在那时填充的关联数组...
Async success! [ { name: 'administration',
pass: 'peace',
status: 'active',
login: '2090',
logout: 'na',
service: 'both',
lucky: 'na',
picture: null,
picturex: null,
city: null,
state: null,
legacy: 'na' } ]
length of value passed from database query: 1
isPaused at function call ending: 0
//HANGS HERE AT THIS POINT...???
如何修改我的代码,以便正确地等待数据库调用完成(即“ _line_update()”,然后依次调用“ db.getMembers”)...?预先感谢您的任何建议。