MySQL in NodeJS 是否能够等待全部 query 回传结果才继续执行
2个回答
展开全部
可以使用Promise.all。此方法接受一个包含promise的数组,待里面所有的promise状态变成fulfilled后才会执行then的方法。
var mysql=require('mysql')
var db = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database:'test',
port: 3306
});
var data=['jack','judy','jason','jannifer'];
var dbActions=data.map(function(v){
console.log('插入用户:',v);
return new Promise(function(resolve,reject){
db.query('insert into test set username= ?',v,function(err,result,fields){
resolve({
err:err,
result:result
})
})
})
})
Promise.all(dbActions).then(function(results){
console.log('查询全部完毕',results)
})
输出结果:
F:\admin\nodejs>node test.js
插入用户: jack
插入用户: judy
插入用户: jason
插入用户: jannifer
查询全部完毕 [ { err: null,
result:
OkPacket {
fieldCount: 0,
affectedRows: 1,
insertId: 9,
serverStatus: 2,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0 } },
{ err: null,
result:
OkPacket {
fieldCount: 0,
affectedRows: 1,
insertId: 10,
serverStatus: 2,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0 } },
{ err: null,
result:
OkPacket {
fieldCount: 0,
affectedRows: 1,
insertId: 11,
serverStatus: 2,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0 } },
{ err: null,
result:
OkPacket {
fieldCount: 0,
affectedRows: 1,
insertId: 12,
serverStatus: 2,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0 } } ]
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询