【问题标题】:Create public variable Nodejs创建公共变量 Nodejs
【发布时间】:2017-04-10 17:23:41
【问题描述】:

你好,这是我的 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

我该怎么做?

【问题讨论】:

    标签: javascript jquery node.js npm


    【解决方案1】:

    您可以将let lat = ... 更改为var lat = ...,因为let 作用域是最近的{} 块,而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);
    });
    

    【讨论】:

      猜你喜欢
      • 2012-05-11
      • 2022-11-14
      • 1970-01-01
      • 1970-01-01
      • 2012-10-10
      • 2014-10-06
      • 2015-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多