В моем настраиваемом модуле для работы с данными я отправляю 2 запроса для первого получения списка видеороликов из своего плейлиста, а во-вторых, я посылаю другой запрос, используя videoID
, который я получил от первого результата.API-интерфейс Youtube с использованием async в node.js Express для нескольких зависимых запросов
Поскольку второй запрос зависит от первого, я использую метод асинхронного модуля waterfall
.
Чтобы проверить, что это работает правильно, я регистрирую результат 1-го запроса во второй функции, но веб-страница не работает и ничего не возвращает в консоли.
Есть проблемы?
var data = function(callback) {
var request = require('request'),
async = require('async');
async.waterfall([
function getVideo (getVideoCallback) {
var url = "https://www.googleapis.com/youtube/v3/playlistItems";
var properties = {
part: 'snippet, contentDetails',
playlistId: 'xxx',
key: 'xxx',
maxResults: 50
}
request({ url:url, qs:properties}, function(err, response, body) {
if(err) { console.log(err); return; }
body = JSON.parse(body);
getVideo(body, getVideoCallback);
});
},
function getVideoDetails (result, getVideoDetailsCallback) {
console.log(result);
...
}
], function (err, result) {
if (err) { console.log(err); return; }
callback(result);
});
}
module.exports = data;
Я сделал, как вы предложил, и сейчас все идет хорошо. Благодарю. –