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

如何在调用含嵌套匿名函数的JS函数时获取返回值?

问题解决思路

首先你的核心问题有两个:一是myFunction没有执行传入的回调函数,二是如果涉及异步操作,同步代码的执行时机早于回调完成。

同步场景下的解决方法

先修正myFunction,确保它调用传入的回调:

function myFunction(a, callback) {
  // 执行回调,可根据需求传递参数
  callback(a);
}

然后提前声明变量c,确保回调执行后再访问(同步回调会立即执行,所以后续代码能拿到值):

let c;
myFunction('test', function(test){
  c = 'result';
});
console.log('value c ' + c); // 输出:value c result

你之前的写法无效,是因为myFunction没有返回值,所以var c = myFunction(...)得到的是undefined,而且原myFunction里根本没执行回调,c根本不会被赋值。

异步场景下的解决方法

如果回调是异步执行的(比如包含setTimeout、AJAX请求等),同步代码会先运行,这时候需要用Promise配合async/await来等待异步操作完成:

// 把myFunction改成返回Promise的形式
function myFunction(a) {
  return new Promise((resolve) => {
    // 模拟异步操作,比如接口请求
    setTimeout(() => {
      resolve('result');
    }, 1000);
  });
}

// 使用async/await等待异步结果
async function getCValue() {
  const c = await myFunction('test');
  console.log('value c ' + c); // 1秒后输出:value c result
}
getCValue();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 06:58:14