nodejs的request第三方库,能否直接获取返回值?

我使用request来获取页面信息,但是我想将页面中获取的信息直接赋值给某个变量,
应该如何实现?

let audio = request('http://103.10.1.132:9527/api/get/song/netease?id='+'30394771',
              (error1, response1, body1) => {
                if(!error1 && response1.statusCode == 200) {
                  if(JSON.parse(body1)['success'] == true){
                    // 成功则返回正常数据
                    return JSON.parse(body1)['url'];
                  }else{
                    // 失败
                    return "none";
                  }
                }else{
                  // 失败
                  return 'none';
                }
              });

我直接这么写,但是返回的不是我想要的return JSON.parse(body1)['url'];

阅读 8.7k
3 个回答

给跪,这是nodejs,异步啊,又不是Java,而且你在回调函数里返回,那怎么能返回到外面呢?
异步的做法要嘛是用回调传值,要嘛用事件比如event来传值。

基础不牢

var request = function(url, callback) {
    // some http request logic;
    callback('transport message');
    return {
        data: 'this is request function'
    };
};

let audio = request('', function(msg) {
    return {
        msg,
        data: 'this is callback'
    };
新手上路,请多包涵

给你贴一段我的代码吧

exports.areacode = async function (latitude,longitude) {
    return new Promise((resolve, reject)=>{
        let yesUrl = " http://gfapi.mlogcn.com/function/v001/poi?lonlat=" + latitude + "," + longitude + "&key=" + key_string
        request(yesUrl, function(error, response, body) {
            if (!error && response.statusCode == 200) {
                resolve(body)
            }
        });
    });
}
 let areacode = await areacode(latitude, longitude).then(function (req) {
                return JSON.parse(req).location.areacode
            })

可以成功用areacode接收到返回值,希望对你有帮助

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题