Javascript 我的搜索栏与YouTube API不同步?
YouTube API只需很短的时间就可以返回对其服务器的请求(在我的例子中,我发送了一个搜索查询)。然而,它仍然太慢,使我的程序同步 这是搜索栏处理程序:Javascript 我的搜索栏与YouTube API不同步?,javascript,youtube-api,meteor,Javascript,Youtube Api,Meteor,YouTube API只需很短的时间就可以返回对其服务器的请求(在我的例子中,我发送了一个搜索查询)。然而,它仍然太慢,使我的程序同步 这是搜索栏处理程序: Template.search_bar.events({ 'keypress #query' : function (evt,template) { // template data, if any, is available in 'this' if (evt.which === 13){
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);
});
}
顶部搜索结果显示在列表中,但结果始终显示在后面的一个结果。这意味着第一次搜索将产生未定义的
,因为此时会话变量不会更新,第二次搜索将产生第一次搜索的结果,依此类推
关于如何解决这个问题的任何意见都将非常有用。您不需要使用
会话来解决这个问题。尝试移动链接。将
例程插入到您的请求回调中,事情就会开始好转;) 在你的问题中你已经做到了。您的search\u get
的性质是异步的,因此您不能期望会话会立即更新。