$.getJSON("/api/getEvents", function(data) {
$.each(data, function(key, event) {
var count = 10;
$.getJSON("/api/getUsers", function(data) {
$.each(data, function(key, event) {
alert("Value: " + count);
count++;
});
});
alert("Count: " + count);
});
});
结果,我得到:
Value: 10
Value: 11
Value: 12
...
Count: 10
为什么计数= 10?
解决方法:
这是因为ajax请求是异步的. $.getJSON只是发起一个请求,但是javascript执行立即继续.如果将警报移动到ajax回调中,则可以看到计数:
$.getJSON("/api/getEvents", function(data) {
$.each(data, function(key, event) {
var count = 10;
$.getJSON("/api/getUsers", function(data) {
$.each(data, function(key, event) {
alert("Value: " + count);
count++;
});
// I moved this here:
alert("Count: " + count);
});
// It used to be here.
});
});
因此,在将var count设置为10之后,javascript解析器将运行$.getJSON,但随后会立即转到下一行,在您的代码示例中,该行会警告“ Count:10”.然后,每当请求完成时,它都会运行回调代码,该代码将增加计数并提醒“值”行.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。