gpt4 book ai didi

javascript - 如何仅在对 gapi.client.youtube 的 request.execute 完成后才执行功能?

转载 作者:行者123 更新时间:2023-11-30 00:31:57 24 4
gpt4 key购买 nike

我正在尝试从 YouTube 播放列表的多个页面获取结果。问题是只有在收到第一个请求的数据后,我才能执行第二个请求(针对第二页)。我尝试过 promise 、延期、回调,但似乎没有任何效果。

function requestVideoPlaylist(playlistId, pageToken, pages) {
$('#video-container').html('');
var requestOptions = {
playlistId: playlistId,
part: 'snippet',
maxResults: 10
};
if (typeof(pages)==='undefined') {
pages = 2;
}

var i = 0
while (i++ < pages){
var request = gapi.client.youtube.playlistItems.list(requestOptions);
request.execute(function(response) {

nextPageToken = response.result.nextPageToken;

var playlistItems = response.result.items;
console.log(playlistItems)

if (playlistItems) {
$.each(playlistItems, function(index, item) {
displayResult(item.snippet);
});
} else {
$('#video-container').html('Sorry you have no uploaded videos');
}
}).done(console.log('test'));

if (nextPageToken) {
console.log(nextPageToken)
requestOptions.pageToken = nextPageToken;
}
}
}

在这个例子中,我收到一条消息'Uncaught TypeError: Cannot read property 'done' of undefined' for the .done(console.log('test)) console.log(nextPageToken) 中没有任何内容,因为该部分也在收到响应之前执行。

最佳答案

显然 request.execute() 不会返回任何东西(undefined),更不用说 Promise 了,所以将函数调用直接插入回调中,如下所示:

request.execute(function(response) {
nextPageToken = response.result.nextPageToken;

var playlistItems = response.result.items;
console.log(playlistItems);

if (playlistItems) {
$.each(playlistItems, function(index, item) {
displayResult(item.snippet);
});

loadNextPage(nextPageToken); // <--
} else {
$('#video-container').html('Sorry, you have no uploaded videos');
}
});

顺便说一句,您不能执行 .done(console.log(...)),因为这等同于:

var foo = console.log(...);
getAPromise().done(foo);

fooconsole.log() 返回的任何内容,在本例中是 undefined,所以你调用 .done(undefined) 这显然不会按照你的意思去做。相反,您需要执行 guest271314 建议的操作:

getAPromise().done(function(arg) {
console.log(arg);
});

(顺便说一句,,我建议您 go read a JS book 加强您对此类典型模式的理解。)

关于javascript - 如何仅在对 gapi.client.youtube 的 request.execute 完成后才执行功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29129760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com