繁体   English   中英

如何将承诺链的结果导出到单独的模块?

[英]How do I export the result of a promise chain to a separate module?

我想在index.js内使用googleApi.js的结果,但是在从index.js访问数据时遇到了麻烦。 根据我尝试过的解决方案,结果要么是未定义的,要么是一个Promise对象。 有人能指出我正确的方向吗?

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 返回 googleMapsClient从里面getTimeAndDistance借此让该res.json.routes[0].legs[0]getTimeAndDistance

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM