为了账号安全,请及时绑定邮箱和手机立即绑定

在获取请求中调用时,回调返回未定义

在获取请求中调用时,回调返回未定义

明月笑刀无情 2023-08-05 19:27:41
我可以控制台记录两者results.data.features,results.data.features[0].center当我控制台时,results.data.features[0].center它显示该位置的数据,但是当我在.get请求中调用它时,它返回未定义。我不确定我做错了什么,任何指导都会有很大的帮助!   router.get('/api/search/:location', async (req, res) => {    const searchLocation = req.params.location;    const geocode_res = await geocode(searchLocation, ({ latitude, longitude }) => {       searchFunction(latitude, longitude)    })    console.log(geocode_res)    res.send(geocode_res)    })    module.exports = {    async searchFunction(latitude, longitude){        const URL = `https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&latitude=${latitude}&longitude=${longitude}&maxradiuskm=50`        try {            let results = await axios.get(URL)            return results.data.features        } catch (err) {            console.log(`${err}`)        }    },        async geocode(location, callback) {        try{            const GEO_URL = `https://api.mapbox.com/geocoding/v5/mapbox.places/${location}.json?access_token=${process.env.MAPBOX_API}`;            let results = await axios.get(GEO_URL)            const latLong = results.data.features[0].center            callback({                        latitude: latLong[1],                        longitude: latLong[0]                    })        }catch(error){            console.log(` ${error}`)        }        },}
查看完整描述

1 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

由于searchFunction是一个async函数,因此您需要使用 来调用它await。并且await只能在async函数内部调用,这就是为什么你需要创建callback一个async函数。


return另外,您需要从回调中执行


尝试这个:


const geocode_res = await geocode(searchLocation, async ({ latitude, longitude }) => {

   return await searchFunction(latitude, longitude)

})

您还需要从地理编码函数返回。以便可以将返回值填充到geocode_res


async geocode(location, callback) {

    try{

        const GEO_URL = `https://api.mapbox.com/geocoding/v5/mapbox.places/${location}.json?access_token=${process.env.MAPBOX_API}`;

        let results = await axios.get(GEO_URL)

        const latLong = results.data.features[0].center

        // add return here

        return callback({

                    latitude: latLong[1],

                    longitude: latLong[0]

                })


    }catch(error){

        console.log(` ${error}`)

    }


},


查看完整回答
反对 回复 2023-08-05
  • 1 回答
  • 0 关注
  • 97 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信