Написал код для оповещений о новых видео на канале YouTube. Я получаю ID нового видео и сверяю его с последним ID в базе данных. Проблема в том, что из этого кода я могу получить ID видео только изнутри, при передаче в другую функцию они становятся undefined. В итоге пришел к тому, что функции работают асинхронно и не успевают получить ID друг от друга. Как сделать синхронность?
setInterval(function() {
var videos = getLatestVideo();
console.log("Video in interval "+videos);
ifNewVideo(videos);
}, 60000); //Каждую минуту проверяю наличие новых видео
function getLatestVideo() { // Получаю ID последнего видео на канале YouTube
var response;
request.get('https://example.com', function (error, response, body) {
if (error) console.log(error);
response = JSON.parse(body).items[0].snippet.resourceId.videoId;
console.log("Response 1: "+response)
});
console.log("Response 2: "+response)
return response;
}
function ifNewVideo(videoId) { //Сверяю его с последним видео в бд
var latestVideo;
Video.find(function (err, latest) {
if (err) return console.error(err);
latestVideo = latest[0].id;
console.log("latestVideo 1: "+latestVideo)
});
console.log("latestVideo 2: "+latestVideo)
console.log("URL = "+videoId +". DB = "+latestVideo);
if (videoId!==latestVideo) {
console.log("This video is new!");
}
}
Для таких задач, я обычно использую библиотеку Async.js ссылка на документацию https://caolan.github.io/async/ раздел Control Flow -> series (как вариант)
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть массив var myMass = ["20", null, undefined, "5", {}, 700];Нужно привести все значения к числу
Хотелось бы увидеть четкое определение Lexical Environment и Record Environment (с пояснениями) и псевдокод, который бы пояснил происходящее