返回http.request内部的变量?

function http_get (ip, port) {
    let WAN = false;
    //创建一个http.ClientRequest对象
    var data = {  //这是需要提交的数据 
        msg: 'can you hear me?',  
        time: new Date().getTime()
    };
    var content = qs.stringify(data);
    var options = {
        host : ip,
        port : port,
        path : '/',
        method : "POST",
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
        }
    };
    var request = http.request(options, function(res) {
        console.log('STATUS: ' + res.statusCode);
        if (res.statusCode == '200') {
            WAN = true;
        }
        console.log(WAN)  //true
        console.log('HEADERS: ' + JSON.stringify(res.headers));  
        res.setEncoding('utf8');
        console.log("get respones");
        let data = '';
        res.on('data', function (chunk) {
            console.log('BODY: ' + chunk);
        });
        res.on('end', function (e) {  
            console.log('-----end----')
        });
    });
    request.on('error', function (e) {  
        console.log('problem with request: ' + e.message);  
    });
    request.write(content);
    request.end();     //发送这个请求
    return WAN;
}
let a = http_get("127.0.0.1", 3000)
console.log('a:'+ a);  //a:false

下面打印出a:false,上面打印出true,要怎么才能打印出a:true?

阅读 1.7k
1 个回答

把中间的 http.request Promise化或者使用 Async/Await 就可以了,可以参考文章

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