YouTube API需要很短的时间才能返回到其服务器的请求(在我的情况下,我发送一个搜索查询)。然而,使我的程序同步仍然太慢。
这是搜索栏处理程序:
Template.search_bar.events({
'keypress #query' : function (evt,template) {
// template data, if any, is available in 'this'
if (evt.which === 13){
var url = template.find('#query').value;
$("#query").val('');
//YoutubeAPI calls go here
Template.list.search_get(url);
Links.insert({sess:Template.list.my_playlist_id,youtube_link:Session.get("search_results").items[0].snippet.title});
}
}
});
这就是执行GET调用的原因:
Template.list.search_get= function(str){
var request = gapi.client.youtube.search.list({part:'snippet',q:str});
request.execute(function(response) {
str = JSON.stringify(response.result);
str = JSON.parse(str);
Session.set("search_results",str);
});
}
顶部搜索结果显示在列表中,但结果始终显示在后面一个结果。这意味着第一次搜索将产生undefined
,因为此时Session变量还没有更新,第二次搜索将生成第一次搜索的结果,依此类推
任何关于我如何解决这个问题的意见都将非常好。
您不需要为此使用Session
。尝试将Links.insert
例程移到请求回调中,情况应该会开始好转;)