我的搜索栏与YouTube API不同步

My search bar is not synchronous with the YouTube API?

本文关键字:同步 API YouTube 搜索栏 我的      更新时间:2023-09-26

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例程移到请求回调中,情况应该会开始好转;)