在下面的代码示例中,地理编码从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;