javascript-如何使已解决的承诺中的变量在全球范围内可用

时间:2018-06-20 04:30:46

标签: javascript node.js express promise

在下面的代码示例中,地理编码从Google地理编码API导入坐标(loc(formatted_address),lat和lng)。它作为待处理的承诺进入该文件,我可以使用.then()来解决。

在我正在构建的应用程序中,我将使用坐标从其他三个API挖掘所有这些API,至少需要lat&lng。因此,我需要在全局级别访问这些变量。

如果我刚好在返回前使用console.log(coordinates),则会得到一个包含loc,lat和lng的漂亮对象,如下所示:

{ loc: '2331 NE Perkins Way, Lake Forest Park, WA 98155, USA',
lat: 47.763343,
lng: -122.303843 }

这正是我所期望和想要的。但是,当我从解决诺言中返回并尝试console.log(coordinates)时,尽管在全局级别声明了该声明(我认为),但我还是得到了“ undefined”。我无法弄清楚如何使坐标中的值在解决诺言之外仍然存在。

说实话,我不确定这是范围界定问题还是解决承诺问题。

'use strict';

//  library modules
const express = require('express');
const router  = express.Router();

//  local modules
const geocode = require('../config/geocode');
let coordinates;

geocode().then((coordinates) => {
    return coordinates;
});

console.log(coordinates);

/* GET home page. */
router.get('/', (req, res, next) => {
    // get weather
    res.render('index');
});


module.exports = router;

0 个答案:

没有答案