Синхронность в Node.JS

290
31 августа 2017, 21:42

Написал код для оповещений о новых видео на канале 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!");
    }
}

Answer 1

Для таких задач, я обычно использую библиотеку Async.js ссылка на документацию https://caolan.github.io/async/ раздел Control Flow -> series (как вариант)

READ ALSO
Привести строки массива к числу JS

Привести строки массива к числу JS

Есть массив var myMass = ["20", null, undefined, "5", {}, 700];Нужно привести все значения к числу

216
Lexical Environment и Record Environment

Lexical Environment и Record Environment

Хотелось бы увидеть четкое определение Lexical Environment и Record Environment (с пояснениями) и псевдокод, который бы пояснил происходящее

224
Соцсеть Инстаграм [требует правки]

Соцсеть Инстаграм [требует правки]

Добрый день! Почему нет поделиться в Инстаграм?

237