Node.js异步数组迭代

特朗·特兰

我正在尝试使用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个元素。因此,应该发生的是应用程序应该(同步):

对于供应商1 /第一区域/第一数组元素:

  • console.log(供应商)
  • console.log(order_item)
  • console.log(发行人)

对于供应商2 /第二个数组元素:

  • console.log(供应商)
  • console.log(order_item)
  • console.log(发行人)

对于供应商3 /第三个数组元素:

  • console.log(供应商)
  • console.log(order_item)
  • console.log(发行人)

但是,它是异步运行的:

  • console.log(供应商)
  • console.log(供应商)
  • console.log(供应商)

  • console.log(order_item)

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

  • console.log(发行人)

  • console.log(发行人)
  • console.log(发行人)

有人可以帮助我达到async同步执行内部步骤的预期效果吗?

提前致谢!

Donghua Li

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
    });
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Node.js异步数组迭代

来自分类Dev

异步数组的node.js安全

来自分类Dev

流管道上的Node.Js异步迭代器

来自分类Dev

在Node.js中使用异步瀑布进行函数迭代

来自分类Dev

带有超时的 Node.js 异步迭代器

来自分类Dev

Node.js的承诺:异步推送到数组并保存

来自分类Dev

Node.js的承诺:异步推送到数组并保存

来自分类Dev

由于Node.js的异步特性而获取空数组

来自分类Dev

在Node.js异步中设置JSON数组

来自分类Dev

数组中每个节点的 node.js 异步瀑布

来自分类Dev

填充异步函数后返回数组 - Node.js

来自分类Dev

Node.js-迭代嵌套JSON数组的正确方法

来自分类Dev

Node js for-loop在下一次迭代之前等待异步功能?

来自分类Dev

Node.js:异步嵌套回调在for循环的每次迭代中均不起作用

来自分类Dev

Node.js同步与异步

来自分类Dev

Node.js异步读写

来自分类Dev

在node.js中迭代大量异步调用/结果(使用ES6 / async / bluebird / generators)?

来自分类Dev

使用Node.js异步将大型对象数组写入Redis

来自分类Dev

遍历整个数组迭代保存在Node.JS中

来自分类Dev

猫鼬+ Node.js:异步问题

来自分类Dev

node.js异步系列函数的参数

来自分类Dev

node.js上的异步/流系列

来自分类Dev

Node.js用异步数据响应

来自分类Dev

Node.js-异步方法调用问题

来自分类Dev

Node.js异步MongoDB保存或更新

来自分类Dev

在node.js中异步循环

来自分类Dev

在node.js中使用异步瀑布

来自分类Dev

MongoDB和Node js异步编程

来自分类Dev

Node.js + SQLite异步事务