Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery$(数据)。每个都不';你不遵守诺言吗?_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript jquery$(数据)。每个都不';你不遵守诺言吗?

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

我在AJAX处理程序中有一个
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
之前执行的操作是同步的,因为这一切都发生在
成功
回调中。