javascript - 创建公共(public)变量Nodejs

标签 javascript jquery node.js npm

你好,这是我的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函数中获取变量latlong

我怎样才能做到这一点?

最佳答案

您可以将 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/

相关文章:

javascript - 由于某种原因没有返回值

javascript - 在 heroku 上为每个 cronjob 运行 casperjs

javascript - 从一个页面移动到另一个页面会产生错误(重复?)

javascript - 遍历 LevelDB

node.js - 对 http 动词的 Mongoose/Express 授权

java webapp 中的 javascript 预处理器

javascript - 如何使用 Next Button 或 Tab 通向另一个 Form 创建多个表

javascript - 在多个 Browserify 或 Webpack 包中共享通过 NPM 加载的模块的简单解决方案

javascript - Fullcalendar,需要查看更多/更多按钮的每天限制事件数量的文件?

jquery - asp 经典格式货币显示?作为通过 jquery load() 函数加载时的千位分隔符