解决Async / Await中未定义的最短路径

问题描述

我正在尝试使用Netlify函数(经过修改return-env.js)来保护我的API密钥,该函数可以捕获并输出环境变量。由于我的项目使用的是普通JS,因此我必须从函数获取键才能使用它。但这就是困难所在。

目前,我有

function getKey() {
  (async ()=> {
    const response = await fetch('/.netlify/functions/return-env')
    const resObj = await response.json()  
    console.log(resObj);
    return resObj;
  })();
}
console.log("my key " + getKey())

const Airtable = require('airtable');
const base = new Airtable({apiKey: 'EXAMPLE-API-KEY'})

getKey()始终返回未定义,就像resObj记录在函数外部一样。这里缺少什么?

解决方法

getKey将返回未定义的,因为您未在函数调用中返回任何内容

function getKey() {
  return (async ()=> {
    ...
  })();
}

它现在将返回一个promise,您可以随后将其链接或等待,等待将要求它处于异步函数中。

如果您只想将.then()删除:

getKey().then((key) => {
  // do something with the key object
}