gpt4 book ai didi

javascript - 如何在加载多张图片后返回数组?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:02:28 28 4
gpt4 key购买 nike

我开发的应用程序对加载的图像进行了一些图像处理,如果出现某些情况,它将返回 true,否则返回 false。

这是我的代码:

function LoadImages(fi) {
var status = new Array();

for (var i = 0; i < fi.length; i++) {
var fr = new FileReader;
fr.onloadend = (function (str) {
if (typeof str === "object") {
str = str.target.result; // file reader
var img = new Image();

img.onload = (function () {
if (some_coditions)
status.push(true);
else
status.push(false);
});
img.src = str;
ImgNam.push(str);
}
})
fr.readAsDataURL(fi[i]);
}
return status
}


$("#Images").change(function () {
var fi = $(this)[0].files;
var status = LoadImages(fi);
});

在 HTML 中:

<input id="Images" type="file" multiple />

我想获取状态数组。问题是函数 LoadImages 在加载完成之前返回值。我知道发生这种情况的原因,但我不知道如何解决。

最佳答案

您不能返回任何异步获取的值,因为该函数在调用 fr.onloadend 时已经返回。但是,您可以返回一个 Promise,而不是一个数组:

function LoadImages(fi) {
var deferred = new Promise(function(resolve, reject) {
var status = [];
// do some asynchronous work, like putting images into an array
// ...
// when you are ready to return, call resolve with your return value
resolve(status);
});

// return the promise
return deferred;
}

然后,与其期望返回值,不如这样写:

var fi = $(this)[0].files;
LoadImages(fi).then(function(status) {
// use status here.
});

关于javascript - 如何在加载多张图片后返回数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33614398/

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