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

在.then回调中返回值时,函数getResult始终返回undefined的问题

问题原因分析

你的getResult函数存在两个核心问题,导致打印的result始终是undefined:

  1. 函数未返回异步操作的Promise对象
    getResult内部调用了返回Promise的someAsyncFunction,但你没有把这个Promise(或者说整个then链)作为函数的返回值。JavaScript中,没有显式return的函数默认返回undefined,所以const result = getResult(11)拿到的自然是undefined。

  2. 异步回调的return无法同步传递结果
    你在then回调里写的return true/false,只是给这个then方法返回的新Promise设定了resolved值,并不是给getResult函数的返回值。异步操作的结果不会同步“穿透”到外层的同步代码里。

修复方案

第一步:让getResult返回Promise

修改getResult,把someAsyncFunction(...).then(...)整个返回出去(同时修复原代码里then回调缺少闭合括号的语法错误):

function getResult(param) {
    // 加上return,把Promise链返回给调用方
    return someAsyncFunction(param).then((result) => {
        if (result == 1) {
            console.log('breakpoint 1');
            return true;
        } else {
            console.log('breakpoint 2');
            return false;
        }
    });
}

第二步:正确获取异步结果

因为getResult现在返回Promise,不能直接同步赋值后打印,需要用以下两种方式之一获取结果:

方式1:使用then链式调用

getResult(11).then(result => {
    console.log(result); // 这里才能拿到正确的true/false
});

方式2:使用async/await(更简洁)

如果在async函数中调用:

async function fetchResult() {
    const result = await getResult(11);
    console.log(result);
}
fetchResult();

或者在支持顶层await的环境(如现代浏览器、Node.js模块)中直接使用:

const result = await getResult(11);
console.log(result);

内容的提问来源于stack exchange,提问作者Kevin Tommy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 11:12:07