我正在尝试使用openweathermap.org的外部API来获取天气预报,并且想使用node.js,到目前为止,我可以在不使用API KEY的情况下获得单个城市的天气预报,并尝试通过API Key获取多个城市的天气预报,因为我找不到使用api key的正确方法。
下面是我正在尝试做的事情的清晰图景:
const http = require("http");
module.exports.getWeather = async event => {
const url = "http://api.openweathermap.org/data/2.5/weather?q=${process.env.cityName},${process.env.countryCode}&APPID=${process.env.secretKey}";
console.log(url);
const req =await http.request(url, (res) => {
let body = '';
console.log('Status:', res.statusCode);
console.log('Headers:', JSON.stringify(res.headers));
res.on('data', (d) => {
body += d;
});
res.on('end', () => {
let data = JSON.parse(body);
console.log('daily weather', data.daily);
});
});
req.on('error',(e) => {
console.error("erreur");
});
req.end();
};发布于 2019-07-26 21:00:06
仅当在promises上调用时,await才有效。http.request使用回调方法,因此await永远不会工作。
你必须缩短这个回调,这样你才能在它上执行await。
Node.js在util模块中有一个名为promisify的内置实用程序方法,您可以使用它。
const http = require("http");
const util = require("util")
util.promisify(http.request)
module.exports.getWeather = async event => {
const url = `http://api.openweathermap.org/data/2.5/weather?q=${process.env.cityName},${process.env.countryCode}&APPID=${process.env.secretKey}`;
const response = await http.request(url)
console.log(response)
};简单多了。
https://stackoverflow.com/questions/57220176
复制相似问题