对于我正在做的一个副项目,并且为了学习更多的 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"
],
"channelId": "UCe3hdN-kzmG97aR3I3xbyJQ",
"maxResults": 50
})
request.execute(function(response) {
console.log(response);
}
然而这并没有帮助,因为现在它是以非阻塞方式工作的 execute() 方法。
我也有点怀疑我正在尝试做的事情是否可能,因为 YouTube API 本来可以通过设计以非阻塞方式编写,所以这可能是使用它的唯一方法......但是这只是我的自由猜测。
最后我知道这与人们通常问的相反(如何使你的代码非阻塞)但有时这就是我学习东西的方式...... :)