gpt4 book ai didi

javascript - 如何正确导出从 NodeJS 中的 API 调用检索到的值

转载 作者:太空宇宙 更新时间:2023-11-04 01:32:01 24 4
gpt4 key购买 nike

我只是想从地理定位 API 获取纬度和经度,这样我就可以将数据传递到另一个 API 调用中来获取天气。如何将值分配给全局变量?截至目前,我变得不确定。

我已将变量移入和移出函数。尝试返回函数内的值并导出函数本身。

const https = require('https');

const locationApiKey =
"KEY GOES HERE";

let lat;
let lon;
let cityState;

module.exports = location = https.get(`https://api.ipdata.co/?api-key=${locationApiKey}`, response => {
try {
let body = " ";

response.on('data', data => {
body += data.toString();
});
response.on('end', () => {
const locationData = JSON.parse(body);
// console.dir(locationData);
lat = locationData.latitude;
lon = locationData.longitude;
});
} catch (error) {
console.error(error.message);
}
});

module.exports.lat = lat;
module.exports.lon = lon;

最佳答案

要导出异步调用检索到的某些值,您需要将它们包装在 Promise 中或 callback .

使用 promise 风格,它看起来像这样

// File: api.js
module.exports = () => new Promise((resolve, reject) => {
https.get(`https://api.ipdata.co/?api-key=${locationApiKey}`, response => {
try {
let body = " ";

response.on('data', data => {
body += data.toString();
});
response.on('end', () => {
const { latitude, longitude } = JSON.parse(body);
resolve({lat: latitude, lon: longitude});
});
} catch (error) {
reject(error);
}
});
});

然后你可以得到像这样的“包装”

// File: caller.js
const getLocation = require('./api.js');

getLocation()
.then(({lat, lon}) => {
// The values are here

console.log(`Latitude: ${lat}, Longitude: ${lon}`)
}))
.catch(console.error);

关于javascript - 如何正确导出从 NodeJS 中的 API 调用检索到的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55776601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com