暂停javascript代码直到另一个函数终止时出现问题

暂停javascript代码直到另一个函数终止时出现问题,javascript,node.js,delay,Javascript,Node.js,Delay,我使用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/queri

我使用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);
 });

}
这里可以看到控制台中的输出。初始的“Async success!”打印后是对象的输出(由数据库调用返回),这是应该的。此外,当'resolved'(.then)语句完成时,我看到'isPaused'变量被更改为“0”…这是应该的…但是,一切似乎都“挂起”…我没有看到任何“DATABASE CALL COMPLETED”的日志打印输出以及当时应该填充的关联数组

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...???

如何修改我的代码以便正确地等待数据库调用完成(例如,'u line_update()'反过来调用'db.getMembers')。。。?提前感谢您的建议。

\u line\u update
退回承诺,然后
等待它(或者打电话给
。然后
放在承诺上,把所有东西都放在
里。然后
)谢谢您的回复。不确定你所说的“让我们更新并返回承诺”是什么意思。。。?您的意思是直接将数据库承诺调用放在该函数中。。。?换句话说,消除“db.getMembers”调用并将“\u line\u update”移动到我的“querys”脚本中…?您的
\u line\u update
返回一个承诺,但您没有对它做任何操作。你需要归还它并在外面消费。我想这就是.then和.catch正在做的事情…按照承诺行事(或者“解决”或者“拒绝”)。。。?抱歉,我对使用承诺有点陌生…是的,但它们都在函数中。由于您希望异步操作在外部被观察和执行,因此需要返回承诺。