gpt4 book ai didi

mysql - NodeJS中处理MySQL的嵌套查询回调

转载 作者:行者123 更新时间:2023-11-29 06:53:31 25 4
gpt4 key购买 nike

我是使用 MySQL 数据库的 NodeJS 新手,我想执行嵌套查询的代码。情况是我必须获取不完整交易的列表,然后使用迭代循环来迭代我从数据库收到的列表。在循环中,会执行更多查询,并调用第 3 方 API 来获取在回调中返回数据的数据。现在的问题是回调异步执行,循环不会等待回调返回数据并继续前进。请指导我,因为我陷入了这种情况。

这是我的代码

var sql = incompleteTradesQuery.getIncompleteTrades();
sqlConn.query(sql, function (err, data) {
if (err) {
console.log(err);
}
else {
for (var i = 0; i < data.length; i++) {
bittrexExchange.getOrder(data.order_uuid, function(err, order_data) {
if (order_data.result.IsOpen != true) {
var order_sql = tradesQuery.insertTrade(order_data.result.OrderUuid, order_data.result.Exchange, data.customer_id, order_data.result.Quantity, order_data.result.QuantityRemaining, order_data.result.Limit, order_data.result.Reserved, order_data.result.ReserveRemaining, order_data.result.CommissionReserved, order_data.result.CommissionReserveRemaining, order_data.result.CommissionPaid, order_data.result.Price, order_data.result.PricePerUnit, order_data.result.Opened, order_data.result.Closed, order_data.result.IsOpen, null, data.commission_fee, data.total_transfer, new Date());
sqlConn.query(order_sql);

var incomplete_trades_query = incompleteTradesQuery.deleteIncompleteTradesById(data.id);
sqlConn(incomplete_trades_query);
}
});
}
}
});

最佳答案

由于 NodeJS 本质上是以异步方式工作的,因此您的嵌套查询也将是异步的,并且编写回调链将是一项痛苦的任务。对于您的问题,一个简单的答案是使用 Promise

此外,我建议您使用异步方式来处理多个查询,这无疑比处理查询/请求的同步方式更快。<​​/p>

NodeJS还提供 async.js 模块将解决您的问题。 QStep 也是处理嵌套回调代码的好包。

https://code.tutsplus.com/tutorials/managing-the-asynchronous-nature-of-nodejs--net-36183

关于mysql - NodeJS中处理MySQL的嵌套查询回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46582114/

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