异步函数javascript(Meteor)中的函数调用未定义

异步函数javascript(Meteor)中的函数调用未定义,javascript,jquery,asynchronous,meteor,Javascript,Jquery,Asynchronous,Meteor,问题似乎是调用函数vote\u ipcheck()和vote\u cookie\u check()都会抛出一个错误Uncaught TypeError:undefined不是一个函数。如果我将函数的内容放在$.getJSON调用中,那么这不是问题,但是调用函数会引发错误 如果有人知道为什么会发生这样的事情,那就太好了 if (ip_check) { $.getJSON("http://smart-ip.net/geoip-json?callback=?", functio

问题似乎是调用函数
vote\u ipcheck()
vote\u cookie\u check()
都会抛出一个错误
Uncaught TypeError:undefined不是一个函数。如果我将函数的内容放在
$.getJSON调用中
,那么这不是问题,但是调用函数会引发错误

如果有人知道为什么会发生这样的事情,那就太好了

    if (ip_check) {
        $.getJSON("http://smart-ip.net/geoip-json?callback=?", function(data){

            console.log(data.host);

            var vote_ipcheck = vote_ipcheck(data.host);
            var vote_cookie_check = vote_cookie_check();

            if (vote_ipcheck && vote_cookie_check) {
                Router.go('pollyResults', {_id: id});
            } else if (vote_ipcheck == false && vote_cookie_check == false) {
                update_poll();
            }

        });
    }

    function vote_cookie_check() {
      // Handling the cookie business
      console.log(ReactiveCookie.list());

      if (ReactiveCookie.get('voted')) {
        var object_voted = JSON.parse(ReactiveCookie.get('voted'));
        if (id in object_voted) {
            if (object_voted[id] == true) {
                    return true;
            }
        } else {
            object_voted[id] = true;
            ReactiveCookie.set('voted', JSON.stringify(object_voted), {days: 365});
            return false;
        }
      } else {
            var object_voted = {};
            object_voted[id] = true;
            ReactiveCookie.set('voted', JSON.stringify(object_voted), {days: 365});
            return false;
      }
    }

    function vote_ipcheck(ip) {
        ip_voted = ip_array.indexOf(ip);

        if (ip_voted > -1) {
            return true;
        }
        else {
            Polls.update({_id: id}, {$push : {already_voted : ip}});
            return false;           
        }
    }

如果要使用具有这些名称的全局函数,请不要在本地作用域中重新定义
vote\u ipcheck
vote\u cookie\u check
。为局部变量指定不同的名称

        var ipcheck = vote_ipcheck(data.host);
        var cookie_check = vote_cookie_check();

        if (ipcheck && cookie_check) {
            Router.go('pollyResults', {_id: id});
        } else if (ipcheck == false && cookie_check == false) {
            update_poll();
        }

您可以通过提供回调来尝试以异步方式编写它们,然后查看它们是否正常工作。似乎工作正常,但没有注意到javascript中的函数名和变量名冲突。谢谢