在我的应用程序中,我需要进行 IP 查找作为继续执行另一个需要该数据的功能的先决条件。最初,我按如下方式调用该函数:
$(document).ready(function(){
var ipUrl = "myURL?callback=?";
$.getJSON(ipUrl, function(data) {
window.ip = data['ip'];
console.log("inside function" + window.ip);
}).done(printIp());
});
function printIp() {
console.log("function is done " + window.ip);
}
但是,这输出为
function is done undefined
inside function <ip_address>
即printIp()
函数在$.getJSON
实际完成之前被调用。
但是,如果我将调用包装printIp()
在匿名函数中,如下所示:
$.getJSON(ipUrl, function(data) {
window.ip = data['ip'];
console.log("inside function" + window.ip);
}).done(function() {
printIp();
});
我得到:
inside function <ip_address>
function is done <ip_address>
正如我所料。这里发生了什么?为什么我需要将函数调用包装在匿名函数中?