首页 > 解决方案 > 在 JS 中以 *blocking* 方式使用 YouTube API

问题描述

对于我正在做的一个副项目,并且为了学习更多的 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 本来可以通过设计以非阻塞方式编写,所以这可能是使用它的唯一方法......但是这只是我的自由猜测。

最后我知道这与人们通常问的相反(如何使你的代码非阻塞)但有时这就是我学习东西的方式...... :)

标签: javascriptyoutubeyoutube-data-apisynchronousasynchronous-javascript

解决方案


推荐阅读