gpt4 book ai didi

javascript - javascript 数组的范围从 IE9 到 FireFox/Chrome 有所不同

转载 作者:行者123 更新时间:2023-11-28 21:12:12 27 4
gpt4 key购买 nike

我已经缩小了我的基本问题范围:从 IE9 到 FireFox(和 Chrome),数组的范围有所不同。

在以下函数(仅摘录)中,我声明一个数组,然后通过调用 $.getJSON() 来填充它。因为引用 HoldEm 的行出现在 ProcessArray 函数内(甚至在 boolSortArray 分支内),所以我假设排序工作此时可用。它在 IE9 中有效,但在 FireFox/Chrome 中无效。在引用的行中,sortedWorking 在 FireFox/Chrome 中为空。在任何浏览器中都不会发出错误。

实验表明,sortedWorking 是在标记为“$.getJSON 的末尾”的行之前填充的,而在该行之后它是空的。有什么想法吗?

function ProcessArray(arWorking, boolSortArray, idX, isPartners, isChildren) {
//...
var sortedWorking = [];
if(boolSortArray) {
$.getJSON('MurakiMaida.json', function(data) {
$.each(data.person, function(i, xdata) {
...
sortedWorking.push(targetID + ":" + birthYear);
...
}); //end of $.each
}); //end of $.getJSON

var HoldEm = BubbleSort(sortedWorking);

最佳答案

您对“$.getJSON()”的调用是异步。您不能依赖调用后的代码行中填充的数组。相反,请将依赖于正在填充的数组的代码放入其完成处理程序中。

function ProcessArray(arWorking, boolSortArray, idX, isPartners, isChildren) {
//...
var sortedWorking = [];
if(boolSortArray) {
$.getJSON('MurakiMaida.json', function(data) {
$.each(data.person, function(i, xdata) {
...
sortedWorking.push(targetID + ":" + birthYear);
...
}); //end of $.each

var HoldEm = BubbleSort(sortedWorking);
// ... whatever else ...
}); //end of $.getJSON

现在这也可能意味着您的“ProcessArray”函数本身需要重新考虑,因为类似地,在它返回后您仍然无法确定数组是否已被填充。一般来说,这样做的方式是遵循与“$.getJSON()”本身完全相同的模式:向“ProcessArray()”添加一个回调参数,以便其客户端可以传入一个函数,以便在数组满足条件时调用该函数。已获取并排序以及完成其他任何操作。

关于javascript - javascript 数组的范围从 IE9 到 FireFox/Chrome 有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8377344/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com