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

Node.js http.get的返回结果,怎么传到外面?

Node.js http.get的返回结果,怎么传到外面?

UYOU 2018-09-14 10:09:34
function requestOrderAPI(name,floor){    let re = '';     let url = 'http://此处省略/reservations/plus1?name=' + qs.escape(name) +'&location='+floor;        http.get(url,(res)=>{        res.setEncoding('utf8');        let rawData = '';        res.on('data', (chunk) => rawData += chunk);        res.on('end', () => {            re = rawData;        });    });    return name + ':' + re;//异步的原因拿不到re的值}我想让requestOrderAPI(name,floor)这个函数返回re。有什么好的办法吗?应该怎么做哪?
查看完整描述

1 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

同步思维转异步的问题。。。
如果代码写成这样你就能看明白了

function requestOrderAPI(name,floor){    let re = ''; 
    let url = 'http://此处省略/reservations/plus1?name=' + qs.escape(name) +'&location='+floor;    
    return new Promise(function(resolve, reject) {
        http.get(url,(res)=>{
            res.setEncoding('utf8');            let rawData = '';
            res.on('data', (chunk) => rawData += chunk);
            res.on('end', () => {
                resolve(re);
            });
        });
    });
};async function test () {    let re = await requestOrderAPI(name, floor);    console.log(name + ' ' + re);
}

test();

javascript部分中大部分方法都是异步回调的方法,你想要的功能只能通过callback去实现。或者通过一些promisecoasync/await之类的方式去优化一下异步回调,但是本质上他依然是一个异步回调。这个是解决不了的。这个是语言特性。


查看完整回答
反对 回复 2018-10-30
  • 1 回答
  • 0 关注
  • 1626 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号