Node.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

我想在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 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

非常感谢。我最终做了一些不同的事情,但最终它与您导出承诺的解决方案是一样的。谢谢!我最终做了一些不同的事情,但最终它与导出承诺的解决方案是一样的。