获取npm请求函数之外的值

问题描述 投票:0回答:2

我正在尝试创建一个在传递URL时解析json的函数。它解析它,如果我尝试在请求中记录它,它可以工作,但我不能返回这个值。

function JaySon(){
    request({url: url,json: true}, function (error, response, body) {
        return body;
    })
}

var url ="http://api.geonames.org/findNearbyPlaceNameJSON?lat=51.9877644&lng=-1.47866&username=demo";
var x = JaySon(url);

console.log("json:"+x);

控制台只记录“json:undefined”,根据我的理解,这是因为console.log运行得比解析完成得快。我怎么能解决这个问题呢?

javascript json function npm request
2个回答
0
投票

这是因为您没有在函数中返回任何内容:

async function JaySon(url) {
  return new Promise((resolve, reject) => {
    request({ url: url, json: true }, function(err, res, body) {
      if (err) reject(err);
      else resolve(body);
    });
  });
}

使用它像:

Jayson('your_url').then(data => data)

或者使用async / await,但它必须包含在异步函数中


0
投票

另一个可能的原因也可能是由于您的函数没有接受任何参数,因此在调用函数时没有对您传递的URL发出请求。

你的代码应该是这样的

function JaySon(url){
request({url: url,json: true}, function (error, response, body) {
    return body;
})

}

© www.soinside.com 2019 - 2024. All rights reserved.