jQuery $.each() 异步执行? [重复]

问题描述 投票:0回答:0

我的 jQuery 函数表现得很滑稽,我怎么也想不通为什么?

function getValueFromSettingArray(array,key){
    if(array && array.length > 0){
        console.log("Setting Array Greater Than 0",array);
        $.each(array, function(index,item){
            console.log(index,item);
            if(item.name == key){
                console.log("FOUND",item.value);
                return item.value;
            }
        });
    }

    return false;
}

控制台发送“FOUND”但返回值为“false”,我已经确认这是来自结尾的return false;控制台输出甚至按正确顺序排列。

在 for 循环中做同样的事情提供了预期的结果

function getValueFromSettingArray(array,key){
    if(array && array.length > 0){
        console.log("Setting Array Greater Than 0",array);
        for(let i=0; i < array.length; i++){
            let item = array[i];
            console.log("item loop " + i, item);
            if(item.name == key){
                console.log("FOUND",item.value);
                return item.value;
            }
        }
    }

    return false;
}

我在网上阅读的所有内容都说 $.each() 是同步的,但它以这种方式表现得像是异步的。我很茫然,这可能是直接编码的时间,我做错了什么?有什么建议吗?

编辑:问题因重复而关闭,但我不是在问如何从数组中获取值。我在问为什么我的结果不如预期。

@ivor 友善地评论指出我的内部'return item.value' 正在返回我的$.each() 的函数。这使我的问题更加清晰。

jquery asynchronous synchronous
© www.soinside.com 2019 - 2024. All rights reserved.