javascript - 在 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 本来可以通过设计以非阻塞方式编写,所以这可能是使用它的唯一方法......但是这只是我的自由猜测。
最后我知道这与人们通常问的相反(如何使你的代码非阻塞)但有时这就是我学习东西的方式...... :)
解决方案
推荐阅读
- ios - iOS 相当于 Java/Swing 的 FlowLayout 是什么?
- r - 如何从 R 中的数据框中生成包含数据的 QR 码?
- node.js - React Native - 运行“npm start”和“react-native run-android”时出错
- objective-c - 如何将类型化的可变数组从 Swift 返回到 Objective-C?
- ruby-on-rails - -nil:NilClass 的未定义方法“用户”
- f# - 如何以 1 种记录类型或功能制定配方
- qt - Qt:当多个排队的信号调用同一个槽时如何避免死锁
- ruby-on-rails - 覆盖编辑功能 Devise, rails
- python - 我的 Kivy 程序在左下角随机出现一个白色方块
- python - aiohttp 并发 GET 请求导致 ClientConnectorError(8, 'nodename nor servname provided, or not known')