我如何 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 结果
我正在使用 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 结果