javascript - 如何在javascript foreach "loop"内存储数据,以便可以在 "loop"之外访问它

标签 javascript jquery foreach

我想将一些数据作为属性存储在jquery foreach“循环”内的“randomImages”对象中(此randomImages对象稍后将在另一个函数中使用)。但我发现循环结束后数据丢失了(在ajax回调中,数据就在那里)。这似乎是某种范围或上下文问题,但我不知道出了什么问题。我使用的确切代码如下。

var randomImages = {};

$.get('http://pixabay.com/api/?username=bhinbox0&key=8792f764c13d09a7b7d2&q=yellow+flower&image_type=photo', function (data) {
    $.each(data.hits, function (index, entry) {
        randomImages[entry.webformatURL] = 'center';
    });
    //randomImages.toSource() shows a lot of data here
});

$('p').text(randomImages.toSource()); //why is randomImages empty here?

最佳答案

问题是:您调用一个依赖于异步计算的函数而不等待它。将此计算移至 get 回调内部应该可以解决,因为数据在回调执行时可用。

var randomImages = {};
$.get('http://pixabay.com/api/?username=bhinbox0&key=8792f764c13d09a7b7d2&q=yellow+flower&image_type=photo', function (data) {
    $.each(data.hits, function (index, entry) {
        randomImages[entry.webformatURL] = 'center';
    });
    $('p').text(randomImages.toSource());

});

如果您需要将此数据用于 N 函数,我建议您使用 Promises,但希望您需要将所有内容移至 $.get 回调中。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

关于javascript - 如何在javascript foreach "loop"内存储数据,以便可以在 "loop"之外访问它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30839109/

相关文章:

javascript - 如何向List.js添加另一个过滤类别?

javascript - amcharts 交互式 map : making selected states a clickable link

javascript - keydown() 并按住一个键

javascript - jQuery 添加 URL 参数

javascript - ReactJS 组件 onClick 没有触发自己的功能

javascript - silviomoreto bootstrap-select 不工作

javascript - JQuery 迭代当前 SELECT 值

PHP While 循环搜索多个 MySQL 查询

node.js - forEach函数结束时需要执行函数

javascript - 如何循环数组显示表格所有行的所有数据?