我想将一些数据作为属性存储在" randomImages"对象(此randomImages对象将在稍后的另一个函数中使用)在jquery foreach"循环"内。但是我发现循环结束后数据丢失了(在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?
答案 0 :(得分:3)
问题是:您在不等待的情况下调用依赖于异步计算的函数。将此计算移动到内部获取回调应解决,因为数据在回调执行时可用。
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