You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript函数返回undefined求助:点赞状态判断函数异常排查

get_likes函数返回undefined的问题分析与解决

核心问题

你写的get_likes函数之所以返回undefined,是因为异步操作的返回值处理错误:

  • fetch是异步API,它返回一个Promise对象。你在then回调里写的return true/false,只是这个回调函数的返回值,并不会成为get_likes函数的返回值。
  • 你的get_likes函数本身没有任何return语句,所以JavaScript会默认返回undefined。

修复方案

要让函数能正确返回判断结果,需要让get_likes返回Promise链,然后通过then或async/await来获取最终的布尔值:

方案1:返回Promise链,用then处理结果

function get_likes(post_id) {
    // 关键:return fetch返回的Promise链
    return fetch(`posts/${post_id}`)
        .then(response => response.json())
        .then(post => {
            const user = JSON.parse(document.getElementById('user_id').textContent);
            // 这里的return会成为Promise最终resolve的值
            return post.likes.includes(user);
        });
}

// 调用示例:
get_likes(123).then(isLiked => {
    console.log(isLiked); // 这里会拿到正确的true/false
});

方案2:用async/await简化异步代码

async function get_likes(post_id) {
    const response = await fetch(`posts/${post_id}`);
    const post = await response.json();
    const user = JSON.parse(document.getElementById('user_id').textContent);
    return post.likes.includes(user);
}

// 调用示例(需在async函数内或用then):
async function checkUserLike() {
    const isLiked = await get_likes(123);
    console.log(isLiked);
}
checkUserLike();

补充说明

异步操作无法直接返回同步的结果,必须通过Promise机制来处理后续逻辑。原代码里的return被局限在then的回调作用域中,和外层的get_likes函数没有关联,这才导致函数没有有效返回值。

内容的提问来源于stack exchange,提问作者Maya Twik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:50:12