你好,这是我的nodejs命令行来获取当前位置的天气。
// Index.js
// Modules
const program = require('commander');
const clear = require('clear');
const chalk = require('chalk');
const request = require('ajax-request');
const fs = require('fs');
const json = require('read-data').json;
const jsonfile = require('jsonfile')
// Http Request to freegeoi.net
request({
url: "http://freegeoip.net/json/",
method: "GET",
data: {
format: "json"
},
}, function(err, res, body) {
// Parse the result
const data = JSON.parse(body);
// Extracting coordinates from data
let lat = data.latitude;
let long = data.longitude;
});
// forecase key
const key = "***********************";
// full forecast api url
const url = `https://api.darksky.net/forecast/${key}/${lat},${long}`;
问题是这样的:我想从request函数中获取变量lat和long。
我怎样才能做到这一点?
最佳答案
您可以将 let lat = ...
更改为 var lat = ...
,因为 let
作用域为最近的 {}
block ,而 var
作用域为全局 - 但这通常是不好的做法。
更好的选择是在请求回调结束时调用另一个函数:
function processLatLong(lat, long) {
//do something with lat long
}
request({
url: "http://freegeoip.net/json/",
method: "GET",
data: {
format: "json"
},
}, function(err, res, body) {
// Parse the result
const data = JSON.parse(body);
// Extracting coordinates from data
let lat = data.latitude;
let long = data.longitude;
processLatLong(lat, long);
});
关于javascript - 创建公共(public)变量Nodejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40819728/