gpt4 book ai didi

javascript - 使用 Angular 将文件异步加载到对象数组中并保持其顺序

转载 作者:行者123 更新时间:2023-12-03 08:10:01 25 4
gpt4 key购买 nike

我没有加载脚本,而是将 XML 文件读入对象数组中。我的第一次[愚蠢]尝试是这样的:

for (var i = 1; i < n; i++) {
var filePath = "xml/chapter_"+i+".xml";
$http.get( filePath ).success(function (data) {
$scope.chaptersData.push (data._chapter);
});
}

我很快发现这不好,因为数组将按照文件完成加载的顺序填充,而不是在它们开始时(竞争条件)填充,并且较小的文件将首先完成。我无法使用“i”的值,因为它在任何加载完成之前就已经达到“n”了。

之后我认为 success(function (data, i) { 会起作用,但事实并非如此。我的想法很简单,在我想出某种 Rube 之前戈德堡拼凑 我想我应该问问互联网的智慧是否有“正确”的方法来做到这一点。

最佳答案

您可以将 i 传递到执行请求的函数中。

for (var i = 1; i < n; i++) {
getFile(i);
}

function getFile(index){
var filePath = "xml/chapter_" + index + ".xml";
$http.get( filePath ).success(function (data) {
$scope.chaptersData[index] = data._chapter;
});
}

getFile函数中,参数index的值不会随着外部函数i的变化而变化。因此,当 success 函数执行时,它仍将处于其初始值,并且可用于填充数组。

关于javascript - 使用 Angular 将文件异步加载到对象数组中并保持其顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34183612/

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