我有这样的事情:
elFinder.prototype.commands.info = function()
{
this.exec = function(hashes)
{
var temp_array = new Array(),
temp_html = new String();
var request = new XMLHttpRequest();
request.onload = function()
{
temp_html = "<a href='foo'>bar</a>";
temp_array.push(temp_html);
alert("Outside - Array size is " + temp_array.length);
}
request.open("get", "foo.com/url", true);
request.send();
alert("Outside - Array size is " + temp_array.length);
}
}
分别打印:
内部 - 数组大小为1
和
外部 - 数组大小为0
以某种方式“丢失”数组内容。
答案 0 :(得分:1)
问题出在AJAX
概念本身。特别是,true
进入
request.open("get", "foo.com/url", true);
意味着应该以异步方式处理请求(顺便说一句,建议的模式进入主线程环境,因为像Chrome这样的浏览器不赞成他们通常携带的巨大延迟的同步请求)。
洞察力由alert()
系列中的不同订单提供,首先在Firefox中测试代码段,然后在Chrome中测试。
在我的上下文中我严格需要一个同步行为,所以我切换到false
布尔标志。