JavaScript获取API-将输出保存为对象

JavaScript获取API-将输出保存为对象,javascript,fetch-api,weather-api,Javascript,Fetch Api,Weather Api,我试图找出如何将获取的输出保存到变量。我的目标是把它当作一个物体 这是我的密码: async function getWeather() { let response = await fetch('url'); let result = await response.json(); return console.log(result); } getWeather(); 该代码给了我预期的响应 我尝试返回结果而不是控制台日志,并将其存储在变量(let weather=g

我试图找出如何将获取的输出保存到变量。我的目标是把它当作一个物体

这是我的密码:

async function getWeather() {
    let response = await fetch('url');
    let result = await response.json();
    return console.log(result);
}
getWeather();
该代码给了我预期的响应

我尝试返回结果而不是控制台日志,并将其存储在变量(
let weather=getWeather();
)中,该变量为我提供了promise对象

当我登录控制台时
天气

对于这个问题,我还尝试了另一种解决方案,但当我尝试在fetch之外控制台记录对象时,我会得到未定义的结果


还有其他解决方案吗?

您已经将其定义为一个
异步
函数,它总是首先返回一个
承诺

使用
console.log()中的
await
关键字调用
await
获取返回值

异步函数getWeather(){ let response=等待取数('https://api.weather.gov/alerts'); 让result=wait response.json(); 返回结果; } (异步()=>{ document.querySelector(“#output”).innerText=JSON.stringify(wait getWeather(),null,2); })();
您尝试过使用axios吗?依我看,它比fetch更健壮。@DavePastor…为这样一个简单的解决方案添加一个额外的库对你来说不是太过分了吗?@esqew一点也不,在现实项目中,你会使用这样一个库。但你可以试着答应我chains@DavePastor我不确定您过去从事过哪些“现实生活”项目,但我发现,当语言的内置功能可以在相同数量的代码行中提供相同的确切功能时,我很难坐在代码审查中为在项目中添加任何库辩护。如果该库已经包含在项目中以启用更高级的功能,那将是另一回事,但在这种情况下,我会犹豫是否建议添加任何库。我很想知道你是否相信与此相反的东西。axios是我在大多数情况下使用的,但对你来说可能没有帮助。您将只使用axios而不是fetch。你可能会遇到同样的问题。删除第二个
wait
,并返回结果,而不是返回console.log。让我们知道它是如何运行的。
wait
是否只在
async
函数中工作?当我尝试这样做时,我在参数列表之后得到了
未捕获的SyntaxError:missing)。我在您发送的代码片段中也发现了这个错误。您是对的,谢谢您指出这一点。我已经更新了我的代码片段,以说明如何在这种上下文中使用
wait
。至于语法错误,我也看到了这一点;我相信我为这个小片段/演示设置的要从中检索的JSON格式不正确,但让我再看一看,以确保情况属实。我已经更新了我的片段-我相信抛出的“语法错误”是一个(奇怪的)
await
未在
async
函数中使用的副作用-再次道歉。(另外-我已经重新考虑将对象作为文本输出到
,Snippets控制台似乎没有按预期工作。)@Phil-感谢您的编辑,非常感谢。您可以通过使用
return response.json()
来缩短此过程。如果您立即返回结果,则无需等待
.json()
承诺