我感觉很愚蠢,但我不知道这里有什么问题
var images = [];
angular.forEach($scope.flow.images.files, function (flowFile, i) {
var fileReader = new FileReader();
fileReader.onload = function (event) {
var uri = event.target.result;
images.push(uri);
console.log(images.length); // First iteration length = 1, second iteration length = 2
};
console.log(images.length); // Always shows 0
fileReader.readAsDataURL(flowFile.file);
});
任何人都可以帮助我理解吗?
答案 0 :(得分:0)
这与JavaScript的异步特性有关。 images.length
的日志在fileReader.onload
函数被触发之前发生 ,尽管它之后是顺序发生的,因此images
数组的内容存在差异。
要规避此行为并avoid callback hell,请在JavaScript中查看此tutorial on Promises。