NodeJS异步模块异步处理每次迭代的内容

时间:2018-02-22 22:41:32

标签: javascript node.js asynchronous synchronous async.js

我正在使用Express中间件在NodeJS 8.5版中构建应用程序。

我使用异步模块循环对象数组。 async.each方法遍历每个对象并处理每个元素。

每个对象将根据属性以不同的方式处理。

我现在拥有的方法是在async.each循环体内调用一堆同步方法。但是,我知道这不是“适当的”。节点方式,因为一切都应该是异步的。

如何构建它以正确使用异步方法?

async.each(elements_all, (element_original, callback) => {
  // Create new array
  const elements_processed = [];

  // If element has order number property
  if (element_original.order_number) {
    element_original.order_number = processToDisplay(element_original.order_number); //This is a synchronous call
  }

  // If element has po number property
  if (element_original.po_number) {
    element_original.po_number = processToDisplay(element_original.po_number);
  }

  // If element has item price property
  if (element_original.item_price) {
    element_original.item_price = processToDisplay(element_original.item_price);
  }

  // Push to the return array
  entities_processed.push(element_original);

  callback();
}, (err) => { 
  if (err) {
    res.json({
      server_error: true
    });
  } else {
    res.json(entities_processed);
  }
});

0 个答案:

没有答案