嘿,我很难理解人偶代码的行为
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]
有一个异步问题,但我不知道该如何处理-我应该为这一行做个承诺吗?
谢谢您的帮助!
答案 0 :(得分:0)
您已成功在循环的第一次迭代中记录i
的值:
console.log(i);
但是接下来请看一下您要做的事情:
i = inventoryTransferTableTags[i];
那么i
的值是多少?显然,无论是什么i < 5
现在都是false
,因为循环终止并且您的下一个操作已执行:
console.log("--------------");
修改循环迭代器值时,可以终止循环。