gpt4 book ai didi

mysql - 异步函数等待不等待

转载 作者:可可西里 更新时间:2023-11-01 08:23:17 26 4
gpt4 key购买 nike

我有一个异步函数,用于在 Node.js 中查询 mysql 数据库。我在等待查询执行的结果并将结果插入数组。

  async function getOpenOrders() {
try {
const arrayLoads = [],
last4Orders = await pool.query( `${query1} ` )
// console.log(last4Orders)
for ( let i = 0; i < last4Orders.length; i++ ) {
// console.log(last4Orders[i].orderID)
console.log( arrayLoads )
console.log( `===================` )
const rows = await pool.query( `${query2}` )
console.log( rows )
arrayLoads.push( rows )
// console.log(arrayLoads)
}
// console.log(rows[0])
// console.log(arrayLoads)
res.send( arrayLoads )
} catch ( err ) {
console.log( err )
}
}

getOpenOrders()

但是,for 循环内的 await 查询不会停止同步代码,因为我的 console.log() 显示如下内容:

    []
===================
[]
[ [] ]
===================
[]
[ [], [] ]
===================
[RowDataPacket { Number: '4732', Test: 'TQLM-384', User: 23 },
RowDataPacket { Number: '4732', Test: 'TQLM-384', User: 23 }]
[ [],
[],
[RowDataPacket { Number: '4732', Test: 'TQLM-384', User: 23 },
RowDataPacket { Number: '4732', Test: 'TQLM-384', User: 23 }]
===================
[RowDataPacket { Number: '4732', Test: 'TQLM-384', User: 23 },
RowDataPacket { Number: '4732', Test: 'TQLM-384', User: 23 }]

最佳答案

mysql pool.query 方法返回一个回调,如果你想使用async await,尝试promisify方法然后使用async await

 const {promisify} = require('util');
async function getOpenOrders() {
try {
const arrayLoads = [],
query = promisify(pool.query).bind(pool);
last4Orders = await query( `${query1} ` )
// console.log(last4Orders)
for ( let i = 0; i < last4Orders.length; i++ ) {
// console.log(last4Orders[i].orderID)
console.log( arrayLoads )
console.log( `===================` )
const rows = await query( `${query2}` )
console.log( rows )
arrayLoads.push( rows )
// console.log(arrayLoads)
}
// console.log(rows[0])
// console.log(arrayLoads)
res.send( arrayLoads )
} catch ( err ) {
console.log( err )
}
}

getOpenOrders()

关于mysql - 异步函数等待不等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57816253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com