我的代码有问题,我的代码中看不到天气API
未捕获的SyntaxError:等待仅在异步函数meteo.js:21中有效
if (WithIP) {
const ip = await fetch('https://api.ipify.org/?format=json%27')
.then(resultat => resultat.json())
.then(json => json.ip);
ville = await fetch("http://api.ipstack.com/json/' + ip + '?access_key=' + access_key")
.then(resultat => resultat.json())
.then(json => json.city);
} else {
ville = document.querySelector('#ville').textContent;
}
{
const meteo = await fetch('http://api.openweathermap.org/data/2.5/weather?q=Marseille&appid=33119b4a3fa1ad278805578d27ea15de&lang=fr&units=metric%27')
.then(resultat => resultat.json())
.then(json => json)
答案 0 :(得分:0)
以下是Mozilla开发人员的报价:
异步函数可以包含await表达式,该表达式会暂停异步函数的执行并等待所传递的Promise的分辨率,然后恢复异步函数的执行并返回解析的值。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
答案 1 :(得分:0)
您只能在await
函数中使用async
-为避免使整个代码成为async
函数,请使用IIFE,如下所示:
const ip = (async () => await fetch('https://api.ipify.org/?format=json%27'))();
由于您仍在使用.then
链接,因此您可以完全删除await
部分,而仅使用.then
保持连续性。
fetch('https://api.ipify.org/?format=json%27').then(resultat => resultat.json()).then(...);