在nodejs中循环异步函数
Looping async functions in nodejs
所以这是我的问题。在下面的函数中,我想使用 puppeteerjs 从网站获取一些数据。该函数使用从 mongodb 数据库中获取的名称在网站上搜索产品。所以这是我的问题。我想通过我从 mongo 获得的名称数组循环函数。因此,如果函数完成一次,它将再次从数组中的下一个名称开始,直到数组中没有其他名称。
async function scrape() {
const browser = await puppeteer.launch({
headless: false
});
const page = await browser.newPage();
await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36');
await page.goto(dealer);
await page.type('.Search-bar-text-input', arrayOfArticles[i]);
await page.click('.Embedded-search-button')
await page.waitFor('.BuyingOptions-total-price');
const result = await page.evaluate(() => {
let path = '.BuyingOptions-total-price';
let price = document.querySelector(path).innerText;
return price;
});
}
所以我本来想简单地这样做:
for (var i = 0, len = arrayOfArticles.length; i < len; i++){
但据我所知,它不适用于异步函数。我将如何为我的功能存档相同的文件?
稍微修改一下就可以了
return page.evaluate(() => {
let path = '.BuyingOptions-total-price';
let price = document.querySelector(path).innerText;
return price;
});
//----------------
(async () => {
for (var i = 0, len = arrayOfArticles.length; i < len; i++){
const result = await scrape(arrayOfArticles[i]);
}
})()
所以这是我的问题。在下面的函数中,我想使用 puppeteerjs 从网站获取一些数据。该函数使用从 mongodb 数据库中获取的名称在网站上搜索产品。所以这是我的问题。我想通过我从 mongo 获得的名称数组循环函数。因此,如果函数完成一次,它将再次从数组中的下一个名称开始,直到数组中没有其他名称。
async function scrape() {
const browser = await puppeteer.launch({
headless: false
});
const page = await browser.newPage();
await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36');
await page.goto(dealer);
await page.type('.Search-bar-text-input', arrayOfArticles[i]);
await page.click('.Embedded-search-button')
await page.waitFor('.BuyingOptions-total-price');
const result = await page.evaluate(() => {
let path = '.BuyingOptions-total-price';
let price = document.querySelector(path).innerText;
return price;
});
}
所以我本来想简单地这样做:
for (var i = 0, len = arrayOfArticles.length; i < len; i++){
但据我所知,它不适用于异步函数。我将如何为我的功能存档相同的文件?
稍微修改一下就可以了
return page.evaluate(() => {
let path = '.BuyingOptions-total-price';
let price = document.querySelector(path).innerText;
return price;
});
//----------------
(async () => {
for (var i = 0, len = arrayOfArticles.length; i < len; i++){
const result = await scrape(arrayOfArticles[i]);
}
})()