你好,我有以下代码:
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函数外部的代码,然后再执行函数中的代码。警报的顺序如下所示:
"outside: View Count", "inside: View Count", "outside: View Count", etc...
我希望先执行内部警报,然后在完成时执行外部警报。我已经尝试过等待,但这不起作用,因为我认为它是一个异步函数。
在getJSOn函数中执行代码后,有没有办法让代码保持运行?
谁能帮我解决一下我的问题。我很乐意得到答案:)
发布于 2020-12-02 01:56:15
forEach
循环不适用于定义异步步骤。尝试使用await
进行for...of
循环
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'));
};
https://stackoverflow.com/questions/65095255
复制相似问题