【发布时间】:2016-09-10 23:22:21
【问题描述】:
我正在尝试从创建的播放列表中批量删除 YouTube 视频 (playlistItems)。我有一个播放列表项 ID 数组,我循环遍历并将每个 ID 作为参数传递给下面的函数。
我在每次删除时都会收到状态 204 响应...但是视频实际上并未被删除。而是......只有 2 或 3 个(如果我幸运的话)被删除。例如,如果我要尝试批量删除播放列表中的 10 个视频……实际上只有 2 或 3 个视频可能会被删除。我可以继续运行批量删除,直到所有项目都被缓慢但肯定地删除……但这似乎并不理想,而且会浪费不必要的配额。
我想知道删除播放列表项的速度是否有限制?如果是这样,为什么我会收到明显无法删除的状态 204?
function deleteVideo(id) {
var url = "https://www.googleapis.com/youtube/v3/playlistItems?id="
url += id;
url += "&key=" + oauth2Provider.getApiKey();
return $http({
method: "DELETE",
url: url,
headers: {
"Authorization": "Bearer " + oauth2Provider.getToken()
}
}).then(function successCallback(response) {
console.log(response);
return response;
}, function errorCallback(response) {
console.log(response);
});
}
【问题讨论】:
-
为了清楚起见,您在循环中使用
PlaylistItem: deleteAPI,每次都返回 204(如预期),但播放列表中没有删除视频? -
Correct.You 可以类似地执行 Promise.all(arrayOfVideoPromises) 并获得类似的结果。我可以删除每个都没有问题...但是当我尝试通过如上所述的循环一次发送多个异步删除...或使用 Promise.all...尽管所有承诺以 204 解决。我最终通过遍历承诺数组而不是在数组中的下一个承诺上调用 .then 来解决我的问题,直到前一个承诺得到解决。也就是说,我想了解为什么在发送下一个删除之前我必须等待每个解决。
-
或许更正确的说法是:如果我遍历我的承诺并调用 .then 一个接一个地处理每一个承诺,而无需等待前一个承诺解决......我会得到一个 204 响应...但视频可能会或可能不会被实际删除。
标签: youtube-api youtube-data-api