请教,js中使用fetch获取数据,在第二个then中,如何获取原始的url?

julius1234567 2021-04-14 05:52:59
有一个场景。一个人隶属多个团队,每个团队下有多个频道。
要查询出所有的团队和频道的对应关系。
需要通过个人信息先查询到团队信息。团队不止一个。
然后在通过团队信息查询到频道信息。
并行发送查询频道的请求之后,无法把返回的频道数据和查询用的团队信息关联在一起。
也就是返回的response不知道是哪个团队的id查询出来的?
这怎么办?

举例:
for(var i = 0; i < teams.length; i++)
{

//url中包含团队的id
fetch(url)
.then((response)=>{
//这里可以获取到url,response.url
if (response.ok)
{
return response.json();
}
})
.then((profile)=>{
alert(JSON.stringify(profile));
//在这里,如何获取到原始的url???????url中包含团队的id
});

}

...全文
379 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
泡泡鱼_ 2021-04-14
  • 打赏
  • 举报
回复
这样也是可以的。所以,这要看你所谓的团队id是get方式还是post方式发送的了。get方法的,id应该就在url中。而且看你代码。应该一个url中只包括了一个teams中的元素。所以,也可以通过results的索引去teams中反查。因为它俩里面元素集合的顺序和长度是一样的

results.forEach((result, index) => {
    result.then(res => {
        console.log('url => ', res.url, ';team=>', teams[index])
    })
})
泡泡鱼_ 2021-04-14
  • 打赏
  • 举报
回复
用法不对呀。你不可能在for循环下面直接去.then;fetch返回结果.then;你可以将所有fetch请求打包进一个数组,然后通过数组遍历获取。比如:

const teams = [ '399167803', '399167750' ]
const results = teams.map(team => fetch('https://bbs.csdn.net/topics/' + team))

teams.forEach((team, index) => {
    results[ index ].then(res => {
        console.log('url => ', res.url, ';team=>', team)
    })
})

87,902

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧