gpt4 book ai didi

javascript - Node.js 异步数组迭代

转载 作者:搜寻专家 更新时间:2023-11-01 00:40:32 25 4
gpt4 key购买 nike

我正在尝试使用 async.each 同步迭代数组:

async.each(supplier_array, function(supplier) {
console.log('looking at : ' + supplier);
knex(host_name + '.order_item').where({
supplier: supplier,
order_id: order_id
}).then(function(data) {
console.log(data);
knex(host_name + '.distributor').select()
.then(function(data) {
console.log(data);
}).catch(function(error) {
console.log('error: ' + error);
});
}).catch(function(error) {
console.log('error: ' + error);
});
});

我的 supplier_array 有 3 个元素。所以应该发生的是应用程序应该(同步):

对于 vendor 1/第一个 arr/第一个数组元素:

  • console.log( vendor )
  • console.log(order_item)
  • console.log(分发服务器)

对于 vendor 2/第二个数组元素:

  • console.log( vendor )
  • console.log(order_item)
  • console.log(分发服务器)

对于 vendor 3/第三个数组元素:

  • console.log( vendor )
  • console.log(order_item)
  • console.log(分发服务器)

但是,它是异步操作的:

  • console.log( vendor )
  • console.log( vendor )
  • console.log( vendor )

  • console.log(order_item)

  • console.log(order_item)
  • console.log(order_item)

  • console.log(分发服务器)

  • console.log(分发服务器)
  • console.log(分发服务器)

谁能帮我实现同步运行 async 中的步骤的预期效果?

提前致谢!

最佳答案

如果您想按顺序迭代它们,您应该使用 async.eachSeries。尝试这样的事情:

async.eachSeries(supplier_array, function(supplier, callback) {
console.log('looking at : ' + supplier);
knex(host_name + '.order_item').where({
supplier: supplier,
order_id: order_id
}).then(function(data) {
console.log(data);
knex(host_name + '.distributor').select()
.then(function(data) {
console.log(data);
callback(); // Advance to next iteration here
}).catch(function(error) {
console.log('error: ' + error);
callback(error); // Also callback when error occurs
});
}).catch(function(error) {
console.log('error: ' + error);
callback(error); // Also callback when error occurs
});
});

关于javascript - Node.js 异步数组迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36168666/

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