我想将一些数据作为属性存储在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/