gpt4 book ai didi

javascript - 如何从多个 url 获取数据并将其保存在数组中(React Native)

转载 作者:行者123 更新时间:2023-11-28 14:43:51 25 4
gpt4 key购买 nike

我有一组 RSS URL,我想从中获取数据并将该数据保存在一个数组中。这是我的代码:

// rss urls array
var URLS = [
"https://www.wired.com/feed/rss",
"http://feeds.bbci.co.uk/news/rss.xml",
"http://www.nasa.gov/rss/dyn/breaking_news.rss"
];

我的州有一个数据变量,我希望在其中存储数据

constructor() {
super()
this.state = {
data: []
}
}

我使用fetchData()函数尝试获取数据

  fetchData() {
var urlArray = [];

for (var i = 0; i < URLS.length; i++) {
urlArray.push(URLS[i]);
}

fetch(urlArray)
.then((response) => response.text())
.then((responseData) => {
this.setState({
data: this.extractData(responseData)
});
}).done();
}


componentDidMount() {
this.fetchData();
}

我使用 extractData 函数从 rss feed 中获取数据,如下所示

  extractData(text) {
var doc = new DOMParser().parseFromString(text, 'text/xml');
var items_array = [];
var items = doc.getElementsByTagName('item');

for (var i = 0; i < items.length; i++) {
items_array.push({
title: items[i].getElementsByTagName('title')[0].lastChild.data,
description: items[i].getElementsByTagName('description')[0].lastChild.data,
//thumbnail: items[i].getElementsByTagName('enclosure')[0].getAttribute('url'),
//link: items[i].getElementsByTagName('link')[0].textContent,
//date: items[i].getElementsByTagName('pubDate')[0].textContent,
})
}
return items_array;
}

但是当我运行时,我收到一条错误消息“无法加载空 URL”

最佳答案

您正在将数组传递给 fetch(),而不是字符串或 Request 对象。您可以使用 Promise all 或 async/await 和循环来多次调用 fetch() 并在所有请求完成或记录时获取结果如果任何其他请求抛出错误,则错误。您还可以处理错误并继续循环以获取成功的请求和错误消息。

  fetchData() {    
return Promise.all(
URLS.map(url =>
fetch(url)
.then(response => response.text())
.then(responseData => {
this.setState({
data: this.extractData(responseData)
})
})
.catch(err => /* handle errors here */ console.error(err))
)
).then(() => {// do stuff}, err => {// handle error})
}

从问题中并不清楚 .done() 是什么或调用 .done() 的预期结果是什么。

关于javascript - 如何从多个 url 获取数据并将其保存在数组中(React Native),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47189736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com