异步函数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中的函数名和变量名冲突。谢谢