首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Node.js异步数组迭代

Node.js异步数组迭代
EN

Stack Overflow用户
提问于 2016-03-23 02:17:29
回答 1查看 1.9K关注 0票数 2

我试图使用async.each对数组进行同步迭代

代码语言:javascript
运行
复制
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有三个元素。因此,应用程序应该(同步地):

对于供应商1/第一arr /第一阵列元素:

  • 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内部的步骤的预期效果吗?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-23 02:32:28

如果要按串行顺序迭代它们,则应该使用async.eachSeries。试着做这样的事情:

代码语言:javascript
运行
复制
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
    });
});
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36168666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档