赞
踩
1.promise是什么? 1.解决异步嵌套的问题 2.解决回调问题
(函数里面有函数 保证执行顺序)
3.链式的思想连接其他异步
异步的执行顺序是不确定的…
容器内部有3种状态: (状态不可回退)
- 1.Pending 对象创建的初始状态(悬而未决)
- 2.Fullfilled 成功(执行)
- 3.Rejected 失败
2.使用
- //读文件的操作
- const fs=require('fs');
- const path=require('path');
- let p=new Promise((resolve,reject)=>{
- fs.readFile((err,data)=>{
- if(err){
- reject(err);//输出错误
- }
- resolve(data);//输出数据
-
- });
-
- });
- p.then((data)=>{
- console.log(data.toString());
- }).catch((err)=>{
- console.log(err);
-
- });//拿到promise对象操作数据,如果有异常执行catch里面的
-
3.promise是链式的(data的数据可以.then向下传递 )(在中间出错不会执行后面的)
- const fs=require('fs');
- const path=require('path');
-
- let ps=new Promise((resolve,reject)=>{
- fs.readFile(path.join(__dirname,'a.txt'),(err,data)=>{
- console.log(data.toString());
- if(err){
- reject()
- }
- resolve(data)
- });
- }).then((data)=>{
- new Promise((resolve,reject)=>{
- fs.readFile(path.join(__dirname,'b.txt'),(err,data)=>{
- console.log(data.toString());
- if(err){
- reject()
- }
- resolve(data)
- });
-
- });
-
- }).then((data)=>{
- new Promise((resolve,reject)=>{
- fs.readFile(path.join(__dirname,'c.txt'),(err,data)=>{
- console.log(data.toString());
- if(err){
- reject()
- }
- resolve(data)
- });
-
- });
-
- }).then((data)=>{
- new Promise((resolve,reject)=>{
- fs.readFile(path.join(__dirname,'d.txt'),(err,data)=>{
- console.log(data.toString());
- if(err){
- reject()
- }
- resolve(data)
- });
-
- });
-
- }).catch((err)=>{
- console.log(err);
- });
-
-
-
-
- // fs.readFile(path.join(__dirname,'b.txt'),(err,data)=>{
- // console.log(data.toString());
- // });
- // fs.readFile(path.join(__dirname,'c.txt'),(err,data)=>{
- // console.log(data.toString());
- // });
-
4.es6表达多个传入任意多个参数
- let func=(...args)=>{
- //调用其他函数也可以
- funcA(...args);
-
- }
5.优化 直接return 一个函数
封装一个函数掉用promise
- //读文件的操作
- const fs=require('fs');
- const path=require('path');
- let readFile=(...args)=>{
- return new Promise((resolve,reject)=>{
- fs.readFile(...args,(err,data)=>{
- console.log(data.toString());
- if(err){
- reject()
- }
- resolve(data)
- });
-
- })
-
- }
- readFile(path.join(__dirname,'a.txt')).then((data)=>{
- return readFile(path.join(__dirname,'b.txt'))
-
- }).then((data)=>{
- return readFile(path.join(__dirname,'d.txt'))
-
- }).catch((err)=>{
- console.log(err);
- });
6.promise加强 多个异步放在一个promise(自动形成链路 执行有顺序 等待结果后才返回)
- Promise.all([
- readFile(path.join(__dirname,'a.txt')),
- readFile(path.join(__dirname,'b.txt')),
- readFile(path.join(__dirname,'c.txt'))
- ]).then(([data1,data2,data3])=>{
- console.log(data1.toString());
- console.log(data2.toString());
- console.log(data3.toString());
- });
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。