for循环是否同时运行循环的每个实例? (异步)

时间:2019-12-03 12:05:16

标签: javascript loops asynchronous async-await

想知道这段代码是否正在按我希望的方式运行:

  let modelsArr = [];

  for (row of stockManagement) {
    let sohObj = {};
    let modelsObj = {};

    modelsObj["st_prodcode"] = row.st_prodcode;
    modelsObj["st_sdesc"] = row.st_sdesc;

    for (let key in row) {
      let n = key.search("_");
      if (
        n == 3 &&
        (key.includes("_rol") ||
          key.includes("_rolperc") ||
          key.includes("_eoq") ||
          key.includes("_ms"))
      ) {
        modelsObj[key] = row[key];
        delete row[key];
      }
    }

    let result = await StockPricing.findOne({ st_prodcode: row.st_prodcode });

    if (result) {
      let pupdate = StockPricing.updateOne(
        { st_prodcode: row.st_prodcode },
        row
      );
      let mupdate = StockModels.updateOne(
        { st_prodcode: row.st_prodcode },
        modelsObj
      );
    } else {
      // console.log("insert One called");
      StockPricing.create(row);
      StockModels.create(modelsObj);
    }
  }
}

我希望循环的每个实例以最大速度同时运行,并且让循环的每个实例在执行if else语句之前等待结果(StockPricing数据库调用),然后让它更新2或插入对数据库的调用以异步运行。

循环中的代码可以正常工作,但不确定是否同时运行循环的每个实例(不确定其运行速度是否应达到预期的速度)

谢谢

0 个答案:

没有答案