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

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。有什么好的办法吗?应该怎么做哪?

UYOU
浏览 1627回答 1
1回答

一只名叫tom的猫

同步思维转异步的问题。。。如果代码写成这样你就能看明白了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去实现。或者通过一些promise, co, async/await之类的方式去优化一下异步回调,但是本质上他依然是一个异步回调。这个是解决不了的。这个是语言特性。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript