我如何 return 单个数组中的多个函数值

How can I return multiple function values in a single array

我正在使用 node-fetch 和 cheerio 抓取 5 个不同的站点以获取数据。 一切都已检查完毕,但我需要从数组中的这 5 个独立函数中收集 returned 数据。

首先,我将每个站点的函数名称和 url 存储在一个对象中,就像这样

    url: 'https://sampleurl.com',
    crawl: FirstLinkCrawl
}

const secondLink = {
    url: 'https://sampleurl.com',
    crawl: secondLinkCrawl
}
}```

Then I write the function to crawl each site like so, I ran this function with and without promise, both check out


```const secondLinkCrawl = (body) =>{
    return new Promise((res, rej)=>{
    "this crawl function is ran here, everything works fine, Data is an object"
        const error = false
        if(!error){
            res(Data)
        }else{
            rej()
        }
    })         
}```

This here is my fetch function that takes the url and a callback, which is the crawl function 

```async function Fetch(url, callback){
    const response = await fetch(url)
    const html = await response.text()
    callback(html)
}

然后我使用 promise.all() 调用抓取和抓取,试图将它 return 放在数组中,但在数组中,

    const promises = [
     Fetch(firstLink.url, firstLink.crawl), 
     Fetch(secondLink.url, secondLink.crawl)]

    Promise.all(promises)
        .then(values => console.log(values))
        .catch(err => console.log(err))
}

当我 运行 这个时,我得到 [ undefined, undefined ] 但是当我 运行 它没有承诺并简单地记录结果时,它们都 运行 成功了。 我的目标是将我的结果放在一个数组中。我能做什么?

我还尝试在页面顶部声明一个数组,然后将每个结果推送到数组中,之后我在函数调用的底部记录数组。但是数组 return 是空的

您没有return从 Fetch 函数中获取任何东西,这就是它未定义的原因。您可以通过 -

修复它
async function Fetch(url, callback){
    const response = await fetch(url)
    const html = await response.text()
    const result = await callback(html);
    return result;
}

作为回调,您将传入 Fetch 函数 returns Promise,这样我们就可以等待它和 return 结果