Javascript jquery$(数据)。每个都不';你不遵守诺言吗?
我在AJAX处理程序中有一个Javascript jquery$(数据)。每个都不';你不遵守诺言吗?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我在AJAX处理程序中有一个each()循环,可以将其推入我的temp数组中,但最终还是得到了一个空数组。奇怪的是,我记得我曾经在each()上使用过promise,所以它没有问题 var temp = []; $.ajax({ type: 'GET', url: '/endpoint', success: function(data) { $(data).each(function() { //do some stuff
each()
循环,可以将其推入我的temp
数组中,但最终还是得到了一个空数组。奇怪的是,我记得我曾经在each()
上使用过promise,所以它没有问题
var temp = [];
$.ajax({
type: 'GET',
url: '/endpoint',
success: function(data) {
$(data).each(function() {
//do some stuff
console.log(something); // working
temp.push(something);
}).promise().done(function() {
console.log(temp); // still empty array?!
});
});
更新:下面是人们是如何做到这一点的将您的脚本简化为您的问题所要求的内容,一切似乎都很正常。希望这能帮助您发现问题在代码中的其他地方:
var-temp=[];
var数据=[1,2,3,4,5,6,7,8];
$(数据)
.每个(功能(事物){
//做点什么
console.log(东西);//正在工作
临时推(物);
})
.承诺
.done(函数(){
console.log(temp);//数组仍然为空?!
});代码>
你忘了一个括号}
var temp = [];
$.ajax({
type: 'GET',
url: '',
success: function(data) {
$(data).each(function() {
//do some stuff
console.log('something'); // working
temp.push('something');
}).promise().done(function() {
console.log(temp); // still empty array?!
});
}});
请参见中没有任何内容表明。每个
都返回一个允诺。也许它不是一个被复制者,OP似乎用一个同步循环做了一些奇怪的事情?现在代码的格式已经很清楚了,我可以看出您缺少了一个)
来关闭每个()
,而承诺()
调用的位置不正确;它应该在$.ajax
上,而不是success
处理程序上function@Liam下次(或这一次)请不要忘记包含有关您的代码功能的关键信息(image.onload
),最好创建一个代码段,我不相信他在success
回调中所做的任何事情都是异步的。在该上下文中,将每个
包装成一个承诺与使用纯同步替代方案没有区别。除非我现在很笨,并且遗漏了一些明显的东西……在这种情况下,我很高兴知道。在他尝试记录temp
之前执行的操作是同步的,因为这一切都发生在成功
回调中。