当前位置:   article > 正文

vue3之promise 方法执行顺序_vue3 fs

vue3 fs

1.promise是什么? 1.解决异步嵌套的问题 2.解决回调问题
(函数里面有函数 保证执行顺序)
3.链式的思想连接其他异步
异步的执行顺序是不确定的…
容器内部有3种状态: (状态不可回退)

  1. 1.Pending 对象创建的初始状态(悬而未决)
  2. 2.Fullfilled 成功(执行)
  3. 3.Rejected 失败

2.使用

  1. //读文件的操作
  2. const fs=require('fs');
  3. const path=require('path');
  4. let p=new Promise((resolve,reject)=>{
  5. fs.readFile((err,data)=>{
  6. if(err){
  7. reject(err);//输出错误
  8. }
  9. resolve(data);//输出数据
  10. });
  11. });
  12. p.then((data)=>{
  13. console.log(data.toString());
  14. }).catch((err)=>{
  15. console.log(err);
  16. });//拿到promise对象操作数据,如果有异常执行catch里面的

 3.promise是链式的(data的数据可以.then向下传递 )(在中间出错不会执行后面的)

  1. const fs=require('fs');
  2. const path=require('path');
  3. let ps=new Promise((resolve,reject)=>{
  4. fs.readFile(path.join(__dirname,'a.txt'),(err,data)=>{
  5. console.log(data.toString());
  6. if(err){
  7. reject()
  8. }
  9. resolve(data)
  10. });
  11. }).then((data)=>{
  12. new Promise((resolve,reject)=>{
  13. fs.readFile(path.join(__dirname,'b.txt'),(err,data)=>{
  14. console.log(data.toString());
  15. if(err){
  16. reject()
  17. }
  18. resolve(data)
  19. });
  20. });
  21. }).then((data)=>{
  22. new Promise((resolve,reject)=>{
  23. fs.readFile(path.join(__dirname,'c.txt'),(err,data)=>{
  24. console.log(data.toString());
  25. if(err){
  26. reject()
  27. }
  28. resolve(data)
  29. });
  30. });
  31. }).then((data)=>{
  32. new Promise((resolve,reject)=>{
  33. fs.readFile(path.join(__dirname,'d.txt'),(err,data)=>{
  34. console.log(data.toString());
  35. if(err){
  36. reject()
  37. }
  38. resolve(data)
  39. });
  40. });
  41. }).catch((err)=>{
  42. console.log(err);
  43. });
  44. // fs.readFile(path.join(__dirname,'b.txt'),(err,data)=>{
  45. // console.log(data.toString());
  46. // });
  47. // fs.readFile(path.join(__dirname,'c.txt'),(err,data)=>{
  48. // console.log(data.toString());
  49. // });

 4.es6表达多个传入任意多个参数

  1. let func=(...args)=>{
  2. //调用其他函数也可以
  3. funcA(...args);
  4. }

 5.优化 直接return 一个函数
封装一个函数掉用promise

  1. //读文件的操作
  2. const fs=require('fs');
  3. const path=require('path');
  4. let readFile=(...args)=>{
  5. return new Promise((resolve,reject)=>{
  6. fs.readFile(...args,(err,data)=>{
  7. console.log(data.toString());
  8. if(err){
  9. reject()
  10. }
  11. resolve(data)
  12. });
  13. })
  14. }
  15. readFile(path.join(__dirname,'a.txt')).then((data)=>{
  16. return readFile(path.join(__dirname,'b.txt'))
  17. }).then((data)=>{
  18. return readFile(path.join(__dirname,'d.txt'))
  19. }).catch((err)=>{
  20. console.log(err);
  21. });

6.promise加强 多个异步放在一个promise(自动形成链路 执行有顺序 等待结果后才返回)

  1. Promise.all([
  2. readFile(path.join(__dirname,'a.txt')),
  3. readFile(path.join(__dirname,'b.txt')),
  4. readFile(path.join(__dirname,'c.txt'))
  5. ]).then(([data1,data2,data3])=>{
  6. console.log(data1.toString());
  7. console.log(data2.toString());
  8. console.log(data3.toString());
  9. });

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/86338
推荐阅读
相关标签
  

闽ICP备14008679号