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

为何函数返回前不等待API响应?如何让函数等待响应后再返回?

解决天气API函数无法正确返回响应的问题

你的weather函数当前无法返回API响应的核心原因是:函数没有返回axios.get()生成的Promise对象,then回调里的return result只是回调函数的返回值,不会作为外层函数的返回结果,因此调用await weather()时拿到的是undefined。

以下是两种可行的修改方案:

方案一:直接返回axios请求的Promise

修改weather-api.js代码:

export default () => {
  const link = "http://api.openweathermap.org/data/2.5/weather?q=istanbul&lang=tr&units=metric&APPID=9e0e8bbf1392be5b8b8ae9d453645ff8";
  // 返回axios.get创建的Promise,让外部await可以获取结果
  return axios.get(link).then(
    (response) => {
      return response.data;
    },
    (error) => {
      console.log(error);
      // 抛出错误,方便调用方捕获并处理异常
      throw error;
    }
  );
}

方案二:用async/await改写,代码更直观

修改weather-api.js代码:

export default async () => {
  const link = "http://api.openweathermap.org/data/2.5/weather?q=istanbul&lang=tr&units=metric&APPID=9e0e8bbf1392be5b8b8ae9d453645ff8";
  try {
    const response = await axios.get(link);
    return response.data;
  } catch (error) {
    console.log(error);
    throw error; // 抛出错误,让调用方可以处理异常
  }
}

调用代码保持不变即可,但要注意:调用await weather()的代码必须处于async函数内部,否则会触发语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:03:21