JS:循环外的变量(数组) - 发生了什么?

时间:2017-08-06 23:55:33

标签: javascript

请您纠正我做错了什么?

var ipLocations = []; // variable in question

for (i = 0; i < ips.length; i++) {
    (function(i) {
        setTimeout(function() {

            $.getJSON(....

};

alert(ipLocations); // becoming '' here:(

为什么ipLocations在这里''

1 个答案:

答案 0 :(得分:2)

for循环中的代码是一个非阻塞代码...意味着在getJSONsetTimeout回调填充ipLocations之前,您的提醒将会触发。

您可以使用PromisesgetJSON函数的回调函数来修复它,该函数会检查所有请求是否已完成,如果是,则显示警告。