如何解决如何在while循环中处理异步JavaScript代码?
我试图使用$.getJSON()
从API提取数据,但是遇到了问题。我可以得到的每个调用的最大结果为50。但是,API提供了nextPagetoken
来从另一个页面获取数据。
在while循环中(下面的代码),我想在nextPagetoken
为null时中断循环,但是我该如何从回调函数中做到这一点。我尝试设置一个标志,但我意识到这也行不通。
我还认为while循环无法按预期工作,因为$ .getJSON()将异步运行,而nextPagetoken
将保持null
并且循环将中断。
总结:1.我想从每个页面获取数据。 2.我想知道如何打破while循环。
let nextPagetoken = null;
let flag = 0;
function getAll(){
while(true){
let pyl = {
part: "snippet",key: key,nextPagetoken: nextPagetoken,maxResults: 50,playlistId: playlistId
}
$.getJSON(URL,pyl,pd=>{
console.log(pd);
arr.push(pd.nextPagetoken);
nextPagetoken = pd.nextPagetoken;
// this is wrong
if(nextPagetoken == null) {
flag = 1;
break; //This break statement is illegal
}
});
// This won't work too
if(flag==0) break;
}
}
getAll();
解决方法
您需要在响应后调用该函数。这是一个示例:
let flag = 0;
function getAll(nextPageToken) {
let pyl = {
part: "snippet",key: key,nextPageToken: nextPageToken,maxResults: 50,playlistId: playlistId
}
$.getJSON(URL,pyl,pd => {
console.log(pd);
arr.push(pd.nextPageToken);
nextPageToken = pd.nextPageToken;
// this is wrong
if (nextPageToken == null) {
flag = 1;
} else {
flag = 0;
getAll(nextPageToken);
}
});
}
let startingToken; // Whatever this should be
getAll(startingToken);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。