最近一直在研究js的Promise对象,其中有一篇blog写得比较通俗易懂,转发如下:

http://www.cnblogs.com/lvdabao/p/es6-promise-1.html

参照上面描述的自己写了测试例子,明白了Promise的用法,然后自己写了个fs的Promise的例子,代码如下:

var fs=require('fs');
function readFile(){let readP=new Promise(function(success,fail){fs.readFile('./main.js',function(err,data){if(err){fail(err);}success(data.toString());});});return readP;
}function readFile2(){let readP=new Promise(function(success,fail){fs.readFile('./Person.js',function(err,data){if(err){fail(err);}success(data.toString());});});return readP;
}function readFile3(fileName){let readP=new Promise(function(success,fail){fs.readFile('./'+fileName,function(err,data){if(err){fail(err);}success(data.toString());});});return readP;
}var content='';/*readFile().then(function(data){//console.log(data.toString());content=data.toString();return readFile2();
}).then(function(data){content+='\n-------------Person.js------------\n';content+=data.toString();console.log(content);
});*/readFile3('main.js').then(function(data){content=data.toString();return readFile3('Person.js');
}).then(function(data){content+='\n-------------Person.js------------\n';content+=data.toString();console.log(content);
});

这个是刚学Promise的第一个自己写的代码,继续深入,挖掘Promise的特性,又参考了这篇问答blog,地址如下:

”关于mongoose结合promise的问题”

https://cnodejs.org/topic/55efda46dceb7e671ee08bcb

参考了人家的代码,又写了个2.0的代码,改造代码如下:主要是采用了co库和yield特性

var fs=require('fs');
var co=require('co');function readFile3(fileName){let readP=new Promise(function(success,fail){fs.readFile('./'+fileName,function(err,data){if(err){fail(err);}success(data.toString());});});return readP;
}var content='';co(function *() {let file1 = yield readFile3('main.js');let file2 = yield readFile3('Person.js');// 这里处理file1, file2, file3
  console.log(file1);console.log('\n ok-------------Person.js------------ ok \n');console.log(file2);});

后来,根据模块化,改造了上面的代码,主要是把读取文件的业务逻辑抽离出来:

fsmodule.js的代码

var fs=require('fs');function readFile3(fileName){let readP=new Promise(function(success,fail){fs.readFile('./'+fileName,function(err,data){if(err){fail(err);}success(data.toString());});});return readP;
}module.exports=readFile3;

fspromise3.js的代码:

var fs=require('fs');
var co=require('co');
var fsmodule=require('./fsmodule');co(function *() {let file1 = yield fsmodule('main.js');let file2 = yield fsmodule('Person.js');// 这里处理file1, file2, file3
  console.log(file1);console.log('\n ok-------------Person.js------------ ok \n');console.log(file2);});

总结如下:对Promise有了认识,然后学习了yield和co库,分模块化开发。

每天进步一点点,加油。

转载于:https://www.cnblogs.com/qkabcd/p/7643421.html

关于学习js的Promise的心得体会相关推荐

  1. [CSP-S Day1,Day2 游记]提高组考后总结及学习编程C++以来的心得体会

    怀着沉重而感慨的心情写下了这篇blog 考试中暴露的问题 Day1 Day2 综上 解决方法 学习历程及以来的心得体会 职业精神 这篇博客我可能会写好几天,我jio得这篇博客对我的学习历程以及态度产生 ...

  2. java学不下去能学web安全吗,这半年学习 Web 安全的一点心得体会

    原标题:这半年学习 Web 安全的一点心得体会 来自公众号: 信安之路 大家好,我是 Mirror(王宇阳),专科在读的大二学生:接触信安时间不长,大佬多多指教.信安之路成长平台网站开放后我就在双十一 ...

  3. 学完计算机专业英语感受,学习计算机专业英语的心得体会

    学习计算机专业英语的心得体会 ★精品文档★ 学习计算机专业英语的心得体会计算机专业英语有多重要,我简直不愿再多嘴了,但真正重要的是我们自己能读得懂它最近花短时间学完了<计算机专业英语>,只 ...

  4. python小白逆袭大神课程心得_python小白逆袭大神(深度学习7日训练营)——心得体会...

    使用过程及心得 百度飞桨(PaddlePaddle)是国内唯一功能完备的开源深度学习平台,自Paddle Fluid v1.0发布以来,飞桨陆续在开发.训练和部署全流程上进行全方面的升级. 1.在这次 ...

  5. 学习python过程中的心得体会和收获,也说一下好处坏处

    首先,Python是一种流行的编程语言,用于数据分析.机器学习.人工智能等领域.Python的语法简单易懂,易于学习和理解.这使得它成为许多初学者的首选编程语言. 对于初学者来说,建议从基础开始学习, ...

  6. 学习论文写作课程的心得体会

    目录 前言 正文 前言   本文是关于学习了闵老师的<论文写作>课程的一些收获与感悟,对于研究生来说写论文与写好论文是一个必备的技能,听了闵老师这一门课程以后在写论文的过程中可以少走许多弯 ...

  7. 学python心得体会1000字-学习python cgi的一点心得体会

    My name is %s , I'm %s years old .

  8. 学习numpy快速入门教程 心得体会(1)

    一.numpy的主要对象 NumPy的主要对象是同构多维数组.例如,在3D空间中的一个点坐标为[1, 3, 5]具有一个轴(只有一层[ ]),轴中有3个元素,所以我们说它长度为3.另外,多维数组中轴的 ...

  9. 学习计算机在化学中的应用的心得,学习计算机多媒体技术心得体会

    随着科学技术的发展,特别是计算机技术的推广和普及,多媒体技术在课堂教学中得到了广泛的应用,体会. 一.中学教师特别是青年教师要善于学习.乐于学习计算机多媒体技术 计算机多媒体技术作为教学的一项辅助手段 ...

  10. 计算机专业感悟英语,学习计算机专业英语心得体会.docx

    学习计算机专业英语心得体会 学习计算机专业英语的心得体会 篇一:学习计算机心得体会 学习计算机心得体会 随着信息技术的高速发展并迅速渗透到社会 生活的各个方面,计算机日益成为人们学习.工 作.生活不可 ...

最新文章

  1. 【热门收藏】iOS开发人员必看的精品资料(100个)——下载目录
  2. 机房收费系统中——存储过程中加入事务,实现学生注册
  3. Objective-C Runtime
  4. 如何解决Connect超时导致的阻塞问题
  5. [NCTF2019]Reverse
  6. java泛型的作用和实现原理_java泛型的作用及实现原理
  7. java中编译类型的方法 和 运行时的类型方法 有什么区别
  8. 判断浏览器是否为手机端 is mobile
  9. docker 容器命令
  10. 智慧故事----每次进来看看都会有收获
  11. Linux中ping脚本
  12. 牛客 赛码网 编程题JavaScript的输入输出
  13. java中map、list转json
  14. Windows系统镜像、PE系统下载地址大全
  15. Java反编译xml实现_如何反编译apk文件得到源码和XML文件
  16. NRF24L01模块----6通道通讯测试
  17. 【转载】html中自定义字体
  18. html在浏览器中打开就是网站,浏览器打开网页的过程
  19. 分布式任务ijobhandle
  20. 继电器互锁功能的实现

热门文章

  1. Finite State Transducers 详解
  2. 第十三次CCF CSP认证(2018年3月)真题跳一跳
  3. leetcode刷题日记-课程表 III
  4. 【ArcGIS|空间分析|网络分析】7 使用一支车队服务一组停靠点
  5. Flink 1.13,State Backend 优化及生产实践分享
  6. React目录结构详细解析
  7. python基础篇——列表与列表算法(下)
  8. python 纵向输出字符串_Python(五)字符串
  9. oracle rac实例停止,oracle rac启停命令使用实例
  10. python画地图学校_python使用pyecharts库画地图数据可视化的实现