首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在foreach循环中跳过了getJSON函数

在foreach循环中跳过了getJSON函数
EN

Stack Overflow用户
提问于 2020-12-02 01:16:17
回答 1查看 18关注 0票数 0

你好,我有以下代码:

代码语言:javascript
运行
复制
listItems.forEach( item =>  {


        $.getJSON('https://www.googleapis.com/youtube/v3/videos?part=statistics&id=KS_Vw5DMlEI&key=AIzaSyAlUj6YMmrt-0s34dQ-LdywneUzZhmsVYA', function(data) {
                                                                                                    
       const viewsin = data.items[0].statistics.viewCount; 
       localStorage.setItem('ViewsCounter3', viewsin );
       alert('inside: ' + viewsin);
                                                                                    
        });

       alert('outside: ' + localStorage.getItem('ViewsCounter3'));

});

我的问题是:我的foreach循环中的每一次传递都不会先执行getJSON函数外部的代码,然后再执行函数中的代码。警报的顺序如下所示:

代码语言:javascript
运行
复制
                "outside: View Count", "inside: View Count", "outside: View Count", etc...

我希望先执行内部警报,然后在完成时执行外部警报。我已经尝试过等待,但这不起作用,因为我认为它是一个异步函数。

在getJSOn函数中执行代码后,有没有办法让代码保持运行?

谁能帮我解决一下我的问题。我很乐意得到答案:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-02 01:56:15

forEach循环不适用于定义异步步骤。尝试使用await进行for...of循环

代码语言:javascript
运行
复制
for(let item of listItems){
  await $.getJSON('https://www.googleapis.com/youtube/v3/videos?part=statistics&id=KS_Vw5DMlEI&key=AIzaSyAlUj6YMmrt-0s34dQ-LdywneUzZhmsVYA')
    .done(data=>{                                                                                             
       const viewsin = data.items[0].statistics.viewCount; 
       localStorage.setItem('ViewsCounter3', viewsin );
       alert('inside: ' + viewsin);                                                                          
    });
    alert('outside: ' + localStorage.getItem('ViewsCounter3'));
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65095255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档