电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

nodeJS的回调编程体验

5页
  • 卖家[上传人]:壹****1
  • 文档编号:466295791
  • 上传时间:2022-09-06
  • 文档格式:DOCX
  • 文档大小:11.10KB
  • / 5 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、 nodeJS的回调编程体验 在nodejs代码中,异步编程的直接体现就是回调。异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。下面只能说调用了IO 异步,然后用回调进行了数据处理。 1 . 读取http 是异步等待数据流 ,并在回调函数中进行处理数据 http.get(http:/ function (response) ); 当客户端发送请求并接收到完整的服务端响应头时,就会调用回调函数。在回调函数中,除了可以使用response对象访问响应头数据外,还能把response对象当作一个只读数据流来访问响应体数据 在下面函数里 1.1 在http.get 中我们传入回调函数 function (response) 进行处理 response 1.2 然后在回调函数 function (response) 里 又调用了 response.on事件详见机制 ,在事件 传入回调函数 由于在请求的响应数据流是json 格式,要想通过JSON.parse 分析数据,就需要等待数据全部获取,如果只是部分数据 ,则可能因为数据不全个出错。 因此在data 实际中 需要将数据合并起来

      2、body.push(chunk); 。然后 在end 数据中对数据进行分心,并获取需要的数据。 1.3 而针对获取的数据 需要如何处理,也可以等待回调函数进行处理,所以在获取数据完毕后调用 callback(geoXY); function GetXYjson(addrstr, callback)try http.get(http:/ 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.length1) body = Buffer.concat(body)

      3、; /console.log(body.toString();try var jsonData = JSON.parse(body); /console.log(jsonDatalist); console.log(jsonDatalist.length); if (jsonDatalist.length0)geoXYaddress=addrstr; geoXYname=jsonDatalist0name; console.log(jsonDatalist0x); geoXYx=jsonDatalist0x;console.log(jsonDatalist0y);geoXYy=jsonDatalist0y;console.log( find Geo for num address:%s,addrstr); elsegeoXYaddress=addrstr; geoXYname=; geoXYx=0; geoXYy=0;console.log(can not find Geo for num address:%s,addrstr); catch(err)/ throw err; geoX

      4、Yaddress=addrstr; geoXYname=; geoXYx=0; geoXYy=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.createRe

      5、adStream(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;i0) 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)

      6、; ; ); 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.length0)fws.write(Buffer.concat(geosObj),utf8); console.log(write end ); */ /console.log(get geo %d,data.length);

      《nodeJS的回调编程体验》由会员壹****1分享,可在线阅读,更多相关《nodeJS的回调编程体验》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.