电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOCX文档下载
分享到微信 分享到微博 分享到QQ空间

nodeJS的回调编程体验

  • 资源ID:466295791       资源大小:11.10KB        全文页数:5页
  • 资源格式: DOCX        下载积分:10金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要10金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

nodeJS的回调编程体验

nodeJS的回调编程体验 在nodejs代码中,异步编程的直接体现就是回调。异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。下面只能说调用了IO 异步,然后用回调进行了数据处理。    1 . 读取http 是异步等待数据流 ,并在回调函数中进行处理数据 http.get('http:/www.example.com/', function (response) ); 当客户端发送请求并接收到完整的服务端响应头时,就会调用回调函数。在回调函数中,除了可以使用response对象访问响应头数据外,还能把response对象当作一个只读数据流来访问响应体数据 在下面函数里 1.1 在http.get 中我们传入回调函数 function (response) 进行处理 response 1.2 然后在回调函数 function (response) 里 又调用了 response.on事件详见机制 ,在事件 传入回调函数 由于在请求的响应数据流是json 格式,要想通过JSON.parse 分析数据,就需要等待数据全部获取,如果只是部分数据 ,则可能因为数据不全个出错。 因此在data 实际中 需要将数据合并起来 body.push(chunk); 。然后 在end 数据中对数据进行分心,并获取需要的数据。 1.3 而针对获取的数据 需要如何处理,也可以等待回调函数进行处理,所以在获取数据完毕后调用 callback(geoXY); function GetXYjson(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', function (response) var body = ;var geoXY=; console.log("Got response: " + 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( 'jieguo num: %d',body.length);if (body.length>1) body = Buffer.concat(body); /console.log(body.toString();try var jsonData = JSON.parse(body); /console.log(jsonData"list"); console.log(jsonData"list".length); if (jsonData"list".length>0)geoXY"address"=addrstr; geoXY"name"=jsonData"list"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(' find Geo for num address:%s',addrstr); elsegeoXY"address"=addrstr; geoXY"name"='' geoXY"x"=0; geoXY"y"=0;console.log('can not find Geo for num address:%s',addrstr); catch(err)/ throw err; 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); throw err; 2 . 处理多个http请求的响应数据值 2.1 从文件中读取请求值,通过data 事件 进行异步处理 ,传入回调函数,对请求值进行http 请求 2.2 调用上面单个Http请求 GetXYjson,并传入该函数的回电函数,在回电函数中逐个将获取的响应题的值 push 到一个对象,并在最后一个请求回调返回后,进行处理结果对象。如何处理,通过调用回掉函数 callback(geosObj); function GetXYSFromFileAsyc(src,callback)var rOption = flags: 'r',encoding: 'utf8',fd: null,mode: 0666,autoClose: true; var frs = fs.createReadStream(src,rOption);var geosObj=;frs.on('data', function(chunk)console.log('got %d bytes of data', chunk.length); var strLines=chunk.split('n'); for(var i=0,size=strLines.length;i<size;i+)console.log('data%d:%s',i,strLinesi);if (strLinesi.length>0) try/ 通过函数返回值 肯定是有问题的 因为GetXYjson 调用异步处理数据 / var oneGeo=GetXYjson(strLinesi);/geosObj.push(oneGeo);GetXYjson(strLinesi, function(oneGeo)geosObj.push(oneGeo); console.log('data %s: push XY ',JSON.stringify(oneGeo); console.log('geosObj len %D: ',geosObj.length);if ( geosObj.length=size )console.log('push end'); callback(geosObj); ; ); catch(err)console.log('data%d: err:%s',i,err.message);continue; ); frs.on('end',function()console.log('readStream end'); ); console.log('read end'); / return geosObj; 3. 等待所有响应获取分析完毕后 ,进行统一写入文件处理 调用GetXYSFromFileAsyc函数进行文件处理,并传入回调函数,对响应值进行写入操作。 function writeGeoXYtoFile(src,dst)var wOption = flags: 'a',encoding: 'utf8',mode: 0666 ,autoClose: true ;var fws = fs.createWriteStream(dst,wOption); GetXYSFromFileAsyc(src, function(geosObj)fws.write(JSON.stringify(geosObj),'utf8'); / fws.write(Buffer.concat(geosObj),'utf8'); console.log('write end '); );/ 有问题 异步 和同步 有问题 向下代码 有问题,就是用同步的思想,处理异步函数调用/*var geosObj=;geosObj=GetXYSFromFile(src); console.log('lengh',geosObj.length); if (geosObj.length>0)fws.write(Buffer.concat(geosObj),'utf8'); console.log('write end '); */ /console.log('get geo %d',data.length);

注意事项

本文(nodeJS的回调编程体验)为本站会员(壹****1)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.