【问题标题】:Adding elements to an array in nested scope [duplicate]在嵌套范围内向数组添加元素[重复]
【发布时间】:2015-10-31 18:06:08
【问题描述】:

我感觉很愚蠢,但我不知道这里有什么问题

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);

});

谁能帮我理解一下?

【问题讨论】:

    标签: javascript arrays scope


    【解决方案1】:

    这与 JavaScript 的异步特性有关。 images.length 的日志出现在fileReader.onload 函数被触发之前,尽管它在之后依次出现,因此images 数组的内容存在差异。

    要规避这种行为和avoid callback hell,请查看 JavaScript 中的 tutorial on Promises

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 2019-04-07
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多