在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Java  HTML/ 如何將js回調(diào)函數(shù)中的數(shù)據(jù)返回給最外層函數(shù)?

如何將js回調(diào)函數(shù)中的數(shù)據(jù)返回給最外層函數(shù)?

我希望在nodejs中封裝一個(gè)模塊用于返回http請(qǐng)求的數(shù)據(jù),基本的結(jié)構(gòu)是這樣:

const http=require('http');

function getData(url){
    http.get(url,function(res){
        var body='';
        res.on('data',function(str){
            body+=str;
        });
        res.on('end',function(){
            var result=JSON.parse(body);
            //將result返回到getData外面
        })
    });
}

module.exports=getData;

最后可以通過(guò)調(diào)用getData函數(shù)返回?cái)?shù)據(jù)。

所以問(wèn)題是:

1.如果不借助promise和async function的話要怎么實(shí)現(xiàn)呢?能實(shí)現(xiàn)嗎?

2.如果我向下面一樣直接返回,那返回值到底去哪里了?能取到嗎?

res.on('end',function(){
            var result=JSON.parse(body);
            //將result返回到getData外面
            return result;
        })
回答
編輯回答
笨笨噠

1.是否可以在http外聲明一個(gè)變量?在res end的時(shí)候把返回值賦給 這個(gè)變量,然后同樣在http外return這個(gè)變量
2.在res.on事件內(nèi)return是不會(huì)在調(diào)用的時(shí)候拋到函數(shù)的最外層的

2018年7月17日 08:02
編輯回答
墨小白

1.返回?cái)?shù)據(jù)受res Event的限制,是一個(gè)異步操作。因此不用promiseasync await的話是無(wú)法實(shí)現(xiàn)的。

2.這個(gè)return是無(wú)法直接獲取的。退一步,即使獲取了也還是在http.get的回調(diào)函數(shù)里面,無(wú)法實(shí)現(xiàn)題目要求。

2017年2月3日 13:26
編輯回答
吢丕

可以加個(gè)回調(diào)函數(shù),調(diào)用的時(shí)候傳進(jìn)去就行了

function getData(url,callback){
    http.get(url,function(res){
        var body='';
        res.on('data',function(str){
            body+=str;
        });
        res.on('end',function(){
            var result=JSON.parse(body);
            //將result返回到getData外面
            callback && callback(result)
        })
    });
}

//調(diào)用
getData(url,function(data){
    //你的操作
})
2017年6月26日 21:20
編輯回答
哎呦喂

可以嘗試使用:https://github.com/ForbesLind...
但是還是推薦使用異步來(lái)實(shí)現(xiàn)

2017年6月7日 17:10
編輯回答
懶豬

通過(guò)res.on綁定事件,當(dāng) 檢測(cè)到end事件時(shí)觸發(fā)回調(diào)函數(shù)。沒(méi)法同步return 數(shù)據(jù)的。這樣的module.exports=getData導(dǎo)出結(jié)果也沒(méi)什么意義。

2018年5月6日 09:33