Node.js 如何将承诺链的结果导出到单独的模块?
我想在index.js中使用googleApi.js的结果,但在从index.js访问数据时遇到问题。结果要么是未定义的,要么是承诺对象,这取决于我尝试过的解决方案。有人能给我指一下正确的方向吗 index.js:Node.js 如何将承诺链的结果导出到单独的模块?,node.js,google-api,async-await,es6-promise,Node.js,Google Api,Async Await,Es6 Promise,我想在index.js中使用googleApi.js的结果,但在从index.js访问数据时遇到问题。结果要么是未定义的,要么是承诺对象,这取决于我尝试过的解决方案。有人能给我指一下正确的方向吗 index.js: const googleClient = require('./googleApi.js') let one = '52.4362,4.7291' let two = '52.2672,5.0813' const test = async() => { const
const googleClient = require('./googleApi.js')
let one = '52.4362,4.7291'
let two = '52.2672,5.0813'
const test = async() => {
const result = await googleClient.getTimeAndDistance(one,two)
console.log(result)
}
test()
googleApi.js
const googleMapsClient = require('@google/maps').createClient({
key: 'MY_API_KEY',
Promise: Promise
})
getTimeAndDistance = (origin, destination) => {
googleMapsClient.directions({
origin: origin,
destination: destination,
language: 'en',
units: 'metric',
})
.asPromise()
.then((res) => {
return res.json.routes[0].legs[0]
})
.catch((err) => {
console.log(err)
})
}
module.exports.getTimeAndDistance = getTimeAndDistance
googleApi.js中的代码工作正常,我可以将结果记录到控制台,但即使在导出函数时,我也无法访问模块外部的数据。在
index.js
中返回谷歌地图客户端
从内部获取时间和距离
以提供res.json.routes[0]。腿[0]
在获取时间和距离
外部
const googleMapsClient = require('@google/maps').createClient({
key: 'MY_API_KEY',
Promise: Promise
})
getTimeAndDistance = (origin, destination) => {
return googleMapsClient.directions({
//^^^^^
origin: origin,
destination: destination,
language: 'en',
units: 'metric',
})
.asPromise()
.then((res) => {
return res.json.routes[0].legs[0]
})
.catch((err) => {
console.log(err)
})
}
module.exports.getTimeAndDistance = getTimeAndDistance
在
index.js
中,从getTimeAndDistance
内部返回googleMapsClient
,以在getTimeAndDistance
外部提供res.json.routes[0]。支腿[0]
const googleMapsClient = require('@google/maps').createClient({
key: 'MY_API_KEY',
Promise: Promise
})
getTimeAndDistance = (origin, destination) => {
return googleMapsClient.directions({
//^^^^^
origin: origin,
destination: destination,
language: 'en',
units: 'metric',
})
.asPromise()
.then((res) => {
return res.json.routes[0].legs[0]
})
.catch((err) => {
console.log(err)
})
}
module.exports.getTimeAndDistance = getTimeAndDistance
非常感谢。我最终做了一些不同的事情,但最终它与您导出承诺的解决方案是一样的。谢谢!我最终做了一些不同的事情,但最终它与导出承诺的解决方案是一样的。