var yModule = require('youtube-node'),
nodeYoutube = new yModule();
nodeYoutube.setKey("key");
module.exports.getVideoLength = function (vData){
youTube.getById(vData, function (result) {
return convertTime(result['items'][0]['contentDetails']['duration']);
})
};
var convertTime = function (time){
var reptms = /(?:(\d+)DT)?(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?$/;
var days = "00", hours = "00", minutes = "00", seconds = "00", formattedTime;
//if (reptms.test(time)) {
var matches = reptms.exec(time);
console.log(matches);
if (matches[1]) days = String(matches[1]);
if (matches[2]) hours = String(matches[2]);
if (matches[3]) minutes = String(matches[3]);
if (matches[4]) seconds = String(matches[4]);
formattedTime = "[" + days + ":" + hours + ":" + minutes + ":" + seconds + "]";
return formattedTime;
//}
};
Я пытаюсь понять обратные вызовы даже после прочтения нескольких вещей об этом. nodeJs callbacks simple example это немного помогло, но я все еще не понимаю, как это работает. Я потратил последний час, пытаясь понять, как писать это, используя обратные вызовы.Нужно ли использовать обратные вызовы?
Этот модуль вызывается этим: функция
ytRetrieve.getVideoLength(youtube_parser(text))
youtube_parser в:
function youtube_parser(url){
var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/;
var match = url.match(regExp);
//console.log(match);
if (match&&match[7]){
return match[7].split(" ")[0];
}
}
Что 'bot'? Вы создали это или это какой-то другой модуль? –
@ExplosionPills - это модуль 'irc' – ECMAScript
Это весело. Имя пользователя "ECMAScript", если требуется обратный вызов :) Короткий ответ: да, всегда, особенно в узле. Вот отличный [ресурс по обратным вызовам] (http://javascriptissexy.com/understand-javascript-callback-functions-and-use-them/), который поможет вам обвести вокруг себя голову. Ура! –