全局变量退出函数后重置
Global variable resets after exiting function
我想创建一个非常简单的聊天应用程序,但我被一个奇怪的javascript行为卡住了。
下面是我的代码:
var msg = [];
$(document).ready(function(){
$.getJSON('chat_ajax.php?get=1', function(data) {
$.each(data, function(key_i, val_i) {
var node = [];
$.each(val_i, function(key, val){
node.push(val);
//$('body').append('Test');
});
msg.push(node);
});
});
for (var f=0;f<msg.length;f++){
$('body').append('Test');
}
});
注意,这包含在</body>
之前的<script>
标记中,?get=1
参数仅用于调试
问题是for循环不会被执行。经过一些调试,我发现我的msg
数组在退出$.getJSON()函数后重置(如果我把for循环放在里面它的工作)
这可能是一些基本的语法错误或我对javascript变量的错误理解,但我坚持了一段时间,我广泛的谷歌没有产生任何结果。
getJSON
方法异步完成。因此,for
循环在回调函数之前执行,该函数将值添加到msg
。您需要将for
循环移动到回调中。
var msg = [];
$(document).ready(function(){
$.getJSON('chat_ajax.php?get=1', function(data) {
$.each(data, function(key_i, val_i) {
var node = [];
$.each(val_i, function(key, val){
node.push(val);
//$('body').append('Test');
});
msg.push(node);
});
for (var f=0;f<msg.length;f++){
$('body').append('Test');
}
});
});
相关文章:
- 在 body onLoad 上退出函数
- 返回不会退出 javascript 中的递归函数
- 如何强制退出 javascript 函数
- 如何从许多内部非阻塞函数调用之一中提前退出外部函数
- Async.waterfall 函数在保存解析对象后退出
- 在退出页面之前执行mysql函数
- 在NodeJS中,如何从虚拟函数中退出父函数
- 需要在keyup函数退出时检查长度
- 在 Javascript 中退出函数之前强制加载页面
- 从调用/子函数退出/中断主函数
- JavaScript 退出函数
- 如何退出嵌入在 $.each() 块中的函数
- 函数内部的函数,如何退出主函数
- 退出函数并再次调用自身而不返回 undefined
- 由挂起导致的 AWS Lambda 函数“进程在完成请求之前退出”
- Javascript 当我们用户尝试退出或刷新页面时如何触发函数
- jQuery addClass函数退出了我的脚本
- 不仅从子函数退出,而且从整个父函数退出
- 函数退出后全局变量的值错误
- Javascript:在函数退出时触发操作