如何使用 Playwright 在异步函数内创建循环?

问题描述 投票:0回答:2

所以我想用 Playwright 做一些非常简单的事情,我只需要从我用 csv 制作的数组访问网站

var csvsync = require('csvsync');
var fs = require('fs');
 
var csv = fs.readFileSync('sites.csv');
var data = csvsync.parse(csv);

const { chromium } = require('playwright');

(async () => {

const promises = [];


  const browser = await chromium.launch({
    headless: false
  });
  const context = await browser.newContext();

  // Open new page
  const page = await context.newPage();

  for(let i = 0; i <= data.length; i++) {
      // Go to https://www.google.com.br/?gws_rd=ssl
      await page.goto(`${data[i]}`);

      await Promise.all(promises);
  }
  await Promise.all(promises);
  // ---------------------
  await context.close();
  await browser.close();
})();

那么,这有什么问题吗?

javascript node.js asynchronous playwright
2个回答
0
投票

对 aysnc for 循环的更彻底的答案在这里:JavaScript for 循环中的异步进程

但简而言之:

//Helper function
async function asyncForEach (array, callback) {
    for (let index = 0; index < array.length; index++) {
        await callback(array[index], index, array);
    }
};

//usage
await asyncForEach( data, async d => {
    await page.goto(d);
});

0
投票

简单但稍微冗长的解决方案,因为 for 循环看起来在 javascript 剧作家测试中没有太多支持......

let numberArray = [].constructor(10);
let currentIndex = 0;

for (let _ of numberArray) {
      
   // Do programming logic here - use currentIndex as index

    currentIndex++;
}
© www.soinside.com 2019 - 2024. All rights reserved.