当前位置: 首页 > 面试题库 >

在reactjs中循环获取

欧阳狐若
2023-03-14
问题内容

所以基本上我创建了一个循环,该循环从数组中获取值,然后使用youtube
api将这些值放入一个循环中。如果我从循环内访问youtube链接,则工作正常,但在循环外“(当我运行console.log({urllist})”时,我得到一个空数组。我要做的就是推送所有值放入urllist空数组,然后将其传输到状态变量(“
videos”)

我要指的功能是videoUrls

class MusicCharter extends React.Component{

    constructor(){

    super();

    this.state= {

      data:[],

      videos:[],

        }

    }



    componentDidMount(){

  XHR.onreadystatechange = function(){

    if(XHR.readyState === 4 && XHR.status === 200) {

        var url = XHR.responseText;

        this.setState({data:(JSON.parse(url).tracks.track)})

    }

  }.bind(this)



  XHR.open("GET","http://ws.audioscrobbler.com/2.0/?method=chart.gettoptracks&api_key=xxxxxxx&format=json");

  XHR.send();

}



videoUrls=()=>{

  let i=0;

  let urllist=[]

  for(i;i< this.state.data.length;i++){

      fetch(`https://www.googleapis.com/youtube/v3/search?part=snippet&q=${this.state.data[i].name}&key=xxxxxxxxxxx0`)

      .then(response=> {

        return response.json()

    })

     .then(data=>{

        return(urllist.push(data.items[0]))})

   }

   console.log({urllist})

 }

问题答案:

您的循环不会迭代异步,但你可以把你的for循环内部解决这个async功能异步过程for循环一个JavaScript内和awaiting 异步操作的结果

videoUrls = async () => {
  let i=0;
  let urllist=[]
  for(i;i< this.state.data.length;i++){
      const response = await fetch(`https://www.googleapis.com/youtube/v3/search?part=snippet&q=${this.state.data[i].name}&key=xxxxxxxxxxx0`)
      const json = await response.json()
      urllist.push(json.items[0])
      console.log({urllist})
    }
 }

这可以防止for循环递增,直到对json的响应的获取和转换都完成为止



 类似资料:
  • 问题内容: 在遍历列表的Python循环中,我们可以编写: 并巧妙地遍历列表中的所有元素。有没有办法知道循环中到目前为止我循环了多少次?例如,我要列出一个清单,在处理完10个元素之后,我想对它们进行处理。 我考虑过的替代方案可能是: 要么: 是否有更好的方法(就像)来获得到目前为止的迭代次数? 问题答案: pythonic的方法是使用:

  • 我试图通过使用Kryonet进行通信来创建一个基本的IRC。我遇到的问题是,在我的代码中,我不能安全地使用允许用户键入和发送消息的main while循环,因为Scanner给出了一个错误,并且似乎跳过了对nextLine()的调用。我想做的是让扫描仪在继续之前等待用户输入。 更准确地说,程序将首先在行的开头放一个“:”,然后在用户按enter键后获取用户键入的任何内容,然后将其发送到服务器。我得

  • 我在forEach循环中有一个select元素列表,并且只想要位于索引0的第一个元素。 这个元素将有一个不同的方法,我试图防止重复的代码,我不想只为这个元素创建另一个方法,我试图解决它,但似乎我不成功。

  • 问题内容: 这里发生了什么?我正在尝试创建功能列表: 这没有达到我的期望。我希望列表像这样: 但是列表中的所有功能似乎都是相同的,并且将固定值设置为9: 有任何想法吗? 问题答案: python中的lambda是闭包…。在计算lambda之前,不会对您提供的参数进行求值。那时,i = 9,因为您的迭代已完成。 您正在寻找的行为可以通过functools.partial实现

  • 问题内容: 如果我在一个循环中有一个循环,并且一旦满足一条语句,我想中断主循环,那我应该怎么做? 这是我的代码: 问题答案: 使用标记的中断: 另请参阅 Java代码中的“循环:”。 这是什么,为什么会编译? 文献资料

  • 问题内容: print_r($ samplearr)为包含3个项目的数组打印以下内容: 我想将它们放到HTML表中,所以我正在做一个foreach,但是没有达到我的期望: 正在返回: 这将是我想要的第一个输出: 要获得4722,我需要使用什么功能代替key($ item)? 问题答案: 尝试这个: