欢迎来到天天文库
浏览记录
ID:8969827
大小:24.74 KB
页数:0页
时间:2018-04-13
《nodejs的回调编程体验》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、nodeJS的回调编程体验在nodejs代码中,异步编程的直接体现就是回调。异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。下面只能说调用了IO异步,然后用回调进行了数据处理。 1.读取http是异步等待数据流,并在回调函数中进行处理数据http.get('http://www.example.com/',function(response){});当客户端发送请求并接收到完整的服务端响应头时,就会调用回调函数。在回调函数中,除了可以使用response对象访问响应头数据外,还能把response对象当作一个只读数据流来访问响
2、应体数据在下面函数里1.1在http.get中我们传入回调函数function(response)进行处理response1.2然后在回调函数function(response)里又调用了response.on事件详见机制,在事件传入回调函数由于在请求的响应数据流是json格式,要想通过JSON.parse分析数据,就需要等待数据全部获取,如果只是部分数据,则可能因为数据不全个出错。因此在data实际中需要将数据合并起来body.push(chunk);。然后在end数据中对数据进行分心,并获取需要的数据。1.3而针对获取的数据需要如何处理,
3、也可以等待回调函数进行处理,所以在获取数据完毕后调用callback(geoXY);functionGetXYjson(addrstr,callback){try{http.get('http://map.sh.xxxxx.cn/sisserver?highLight=false&config=GOC&address='+addrstr+'&resType=json&enc=utf-8&a_k=f519b1aee05755b300c69f742198d6749124bfbaf76b2ea6b45eff3bc8e4399188888×××××d
4、',function(response){varbody=[];vargeoXY={};console.log("Gotresponse:"+response.statusCode);//console.log(response.headers);response.on('data',function(chunk){body.push(chunk);//console.log(chunk.toString('utf8'));});response.on('end',function(){console.log('jieguonum:%d',b
5、ody.length);if(body.length>1){body=Buffer.concat(body);//console.log(body.toString());};try{varjsonData=JSON.parse(body);//console.log(jsonData["list"]);console.log(jsonData["list"].length);if(jsonData["list"].length>0){geoXY["address"]=addrstr;geoXY["name"]=jsonData["list"
6、][0]["name"];console.log(jsonData["list"][0]["x"]);geoXY["x"]=jsonData["list"][0]["x"];console.log(jsonData["list"][0]["y"]);geoXY["y"]=jsonData["list"][0]["y"];console.log('findGeofornumaddress:%s',addrstr);}else{geoXY["address"]=addrstr;geoXY["name"]='';geoXY["x"]=0;geoXY
7、["y"]=0;console.log('cannotfindGeofornumaddress:%s',addrstr);}}catch(err){//throwerr;geoXY["address"]=addrstr;geoXY["name"]='';geoXY["x"]=0;geoXY["y"]=0;console.log('Error:%s',err.message);};callback(geoXY);});});}catch(err){console.log('Error:%s',err.message);throwerr;};}2
8、.处理多个http请求的响应数据值2.1从文件中读取请求值,通过data事件进行异步处理,传入回调函数,对请求值进行http请求2.2调用上面单个Http请求Get
此文档下载收益归作者所有