Youtube kimliğini girmek için basit bir alan var. Youtube klibin başlığını almak için renaldo youtube api (https://atmospherejs.com/renaldo/youtube-api) kullanıyorum.Meteor.method neden geri dönülmez?
İstemci tarafı olayı, iz ID (var tid) değerini 'addTrack' yöntemine başarılı bir şekilde geçirir - izleyicinin başlığını sunucudaki konsola gönderir. Müşteriye geri döndüğümde gerçekten kötü bir zaman geçiriyorum.
'addTrack' yönteminden 'getVideoData' yöntemini çağırırsam, her seferinde yine 'undefined' değerini döndürür. Meteor ya da javascript konusunda uzman değilim, bu sadece cehennem için öğreniyorum.
Geri arama kavramı ve javascript'in eşzamanlı doğasını anlıyorum (Sanırım!).
Teşekkürler.
[DÜZ kodu aşağıda daha kullanarak, zaman sorunu çözer]if (Meteor.isServer) {
YoutubeApi.authenticate({
type: 'key',
key: API_KEY
});
Meteor.methods({
addTrack: function(tid) {
Meteor.call("getVideoData", tid, function(err,res) {
console.log(res);
});
},
getVideoData: function(tid) {
var future = new Future();
YoutubeApi.videos.list({
part: "snippet",
id: tid,
}, function (err,data) {
var _data = {"title":data.items[0].snippet.title,"desc":data.items[0].snippet.description};
future["return"](_data)
});
return future.wait();
}
Meteor.startup (fonksiyonu() { Gelecek = Npm.require ('lifler/gelecek');
}); }
Bu, çeşitli olası çözümlere sahip çok yaygın bir Meteor sorudur. Temel sorun, yönteminizin eşzamansız bir işlevi çağırmasıdır. –
Diğer yöntemlerden "getVideoData" yöntemini nasıl çağırıyorsunuz, Meteor.call ("getVideoData") kullanıyor musunuz? – Zafta
Evet, Meteor.call ("getVideoData") aracılığıyla başka bir yöntemden yöntemi çağırıyorum ve hala tanımlanmamış oluyor. – rick