分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

关于学习js的Promise的心得体会

发布时间:2023-09-06 01:16责任编辑:蔡小小关键词:js

最近一直在研究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库,分模块化开发。

每天进步一点点,加油。

关于学习js的Promise的心得体会

原文地址:http://www.cnblogs.com/qkabcd/p/7643421.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved