【问题标题】:Unable to batch delete playlistitems?无法批量删除播放列表项?
【发布时间】: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: delete API,每次都返回 204(如预期),但播放列表中没有删除视频?
  • Correct.You 可以类似地执行 Promise.all(arrayOfVideoPromises) 并获得类似的结果。我可以删除每个都没有问题...但是当我尝试通过如上所述的循环一次发送多个异步删除...或使用 Promise.all...尽管所有承诺以 204 解决。我最终通过遍历承诺数组而不是在数组中的下一个承诺上调用 .then 来解决我的问题,直到前一个承诺得到解决。也就是说,我想了解为什么在发送下一个删除之前我必须等待每个解决。
  • 或许更正确的说法是:如果我遍历我的承诺并调用 .then 一个接一个地处理每一个承诺,而无需等待前一个承诺解决......我会得到一个 204 响应...但视频可能会或可能不会被实际删除。

标签: youtube-api youtube-data-api


【解决方案1】:

如果这对任何人都有帮助,我相信我后来发现你不能同时异步执行所有删除操作。您可以通过异步启动一系列删除,但每次删除都必须在开始链中的下一个删除之前完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-04
    • 2013-09-20
    • 2012-12-11
    • 1970-01-01
    • 2015-04-23
    • 2014-02-07
    • 2020-02-06
    • 2013-05-13
    相关资源
    最近更新 更多