Javascript 我的搜索栏与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){

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);
    });
}
顶部搜索结果显示在列表中,但结果始终显示在后面的一个结果。这意味着第一次搜索将产生
未定义的
,因为此时会话变量不会更新,第二次搜索将产生第一次搜索的结果,依此类推


关于如何解决这个问题的任何意见都将非常有用。

您不需要使用
会话来解决这个问题。尝试移动
链接。将
例程插入到您的请求回调中,事情就会开始好转;)

在你的问题中你已经做到了。您的
search\u get
的性质是异步的,因此您不能期望
会话会立即更新。