【发布时间】:2019-04-30 02:39:01
【问题描述】:
如何在 node.js 中运行下一次执行之前等待数据。例如,我有 3 个部分需要执行。从作业表中收集数据,从车辆表中收集数据,然后运行我的 jar 文件。所以控制台的当前输出是0->1->3->5->7->2->4->6。如何使它像 0->1->3->2->4->5->6->7 。我想等待来自第一个和第二个查询的数据,然后运行 jar 文件。
var express = require('express');
var router = express.Router();
router.post('/', function(req, res, next) {
//console.log("pending data");
console.log("0");
var date = req.param('date');
var joblist;
var vehiclelist;
console.log("1");
res.locals.connection.query('SELECT * FROM job WHERE date = ?',[date] , function (error, results, fields) {
console.log("2");
if (error) throw error;
joblist = JSON.stringify(results);
});
console.log("3");
res.locals.connection.query('SELECT * FROM vehicle ' , function (error, results, fields) {
console.log("4");
if (error) throw error;
vehiclelist = JSON.stringify(results);
});
console.log("5");
var exec = require('child_process').exec, child;
child = exec('java -jar /home/java/testinput.jar',
function (error, stdout, stderr){
//console.log('stdout: ' + JSON.stringify(stdout));
//console.log('stderr: ' + stderr);
console.log("6");
res.send(joblist+" "+stderr);
if(error !== null){
console.log('exec error: ' + error);
}
});
console.log("7");
});
module.exports = router;
【问题讨论】: