对于我正在进行的一个副项目,为了学习更多的 JS,我正在尝试使用 YouTube API 示例,试图了解它们是如何工作的。
在 Google 自己的用于获取给定 YT 频道的播放列表的文档中,我们有以下异步代码:
var channelPlalists = null;
function getchannelPlayLists() {
return gapi.client.youtube.playlists.list({
"part": [
"id"
],"channelId": "UCe3hdN-kzmG97aR3I3xbyJQ","maxResults": 50
})
.then(function(response) {
channelPlaylists = response;
},function(err) { console.error("Execute error",err); });
}
就我而言,我想了解如何将其转换为同步请求,这意味着我希望线程被阻塞,直到响应尚未到达。
我该怎么做?
我看到你可以把上面的函数分解成这两部分:
var request = gapi.client.youtube.playlists.list({
"part": [
"id"
],"maxResults": 50
})
request.execute(function(response) {
console.log(response);
}
然而这无济于事,因为现在 execute() 方法以非阻塞方式工作。
我也有点怀疑我正在尝试做的事情是否完全可行,因为 YouTube API 本来可以按照设计以非阻塞方式编写,因此这可能是使用它的唯一方法。 ..但这只是我的自由猜测。
最后我知道这与人们通常问的相反(如何使您的代码非阻塞)但有时这就是我学习东西的方式...... :)