映射数组并在内部调用异步函数

时间:2020-08-26 10:51:35

标签: javascript node.js asynchronous web-scraping

映射数组并调用所有项目的异步函数的方式是什么?

const scrape = async (url) => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.goto(url);

    const [el] = await page.$x('//*[@id="page-body"]/h2/a');
    const txt = await el.getProperty('textContent');
    const rawTxt = await txt.jsonValue();

    //here do an another thing with an other function
    const obj = formatRes(rawTxt);


    browser.close();
    
    return obj; 
};

第二个功能:

const formatRes = (res) => {
    [...]
    return obj;
}

调用第一个函数:

linksB.map(item => scrape(item));

linksB是一个URL数组。

我想将所有通过刮擦返回的对象放在一个新数组中。

1 个答案:

答案 0 :(得分:0)

假设我们有一个链接数组,您想在每个链接上进行请求,那么我们可以在map内进行数组Promise.all

const urls = [ 'url1...', 'url2...', 'url3...' ];

const responses = await Promise.all(urls.map(url => makeRequest(url)))

// use responses array where each response map exactly to each url's response