首页 > 解决方案 > 属性返回空字符串,而函数工作正常

问题描述

堆栈溢出线程类似

exports.getAddress = asyncHandler(async (req, res, next) => {

    var lon = req.query.lon;
    var lat = req.query.lat;
    var formattedAddress = "";
    var url1 = 'url'

    request(url1, { json: true }, (err, res, body) => {

        if (err) { return console.log(err); }
        formattedAddress = body.formattedAddress;
        console.log(formattedAddress); // string address showing
      });

      console.log(formattedAddress); // string is empty
      
      res.status(200).json({ success: true, data: formattedAddress });
  });

我阅读了上述和许多帖子,但不明白如何在函数之外获取字符串值。

标签: javascriptnode.js

解决方案


您在完成formattedAddress之前访问request(...),欢迎来到异步世界:D

为了使它工作,你应该移动res.status(200).json({ success: true, data: formattedAddress });到请求回调内部,如下所示:

exports.getAddress = asyncHandler(async (req, res, next) => {

    var lon = req.query.lon;
    var lat = req.query.lat;
    var formattedAddress = "";
    var url1 = 'url'

    request(url1, { json: true }, (err, res, body) => {

        if (err) { return console.log(err); }
        formattedAddress = body.formattedAddress;
        res.status(200).json({ success: true, data: formattedAddress });
      });
  });

推荐阅读