需要帮助来了解操纵up节点的异步功能

时间:2020-08-14 15:53:11

标签: javascript puppeteer

嘿,我很难理解人偶代码的行为

const puppeteer = require("puppeteer");
const sleep = require("sleep");

const runPuppeteer = () => {
  puppeteer
    .launch({
      headless: true,
      args: ["--no-sandbox", "--disable-setuid-sandbox"],
    })
    .then(async (browser) => {
      const page = await browser.newPage();
      await page.setViewport({ width: 1200, height: 800 });
      await page.goto("https://www.chevrolet.co.kr/chevy/as.gm?");

      dataHolder = [];

      for (let i = 0; i < 84; i++) {
        inventoryTransferTableTags = await page.$$(".list");
        for (let i = 0; i < 5; i++) { // **** Loop #1 ****
          console.log(i);
          i = inventoryTransferTableTags[i];
        }
        console.log("--------------");
        sleep.sleep(3);
      }
    });
};

runPuppeteer();

我希望从循环#1中看到 console.log(i)-> 0,1,2,3,4,但我得到的输出是

0

----------------

似乎
我= stockTransferTableTags [i]

有一个异步问题,但我不知道该如何处理-我应该为这一行做个承诺吗?

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您已成功在循环的第一次迭代中记录i的值:

console.log(i);

但是接下来请看一下您要做的事情:

i = inventoryTransferTableTags[i];

那么i的值是多少?显然,无论是什么i < 5现在都是false,因为循环终止并且您的下一个操作已执行:

console.log("--------------");

修改循环迭代器值时,可以终止循环。