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去实现。或者通过一些promise
, co
, async/await
之类的方式去优化一下异步回调,但是本质上他依然是一个异步回调。这个是解决不了的。这个是语言特性。
添加回答
举报
0/150
提交
取消