[关闭]
@Wangww0925 2019-08-21T08:51:39.000000Z 字数 1137 阅读 203

promise对象的使用

ES6


promise 承诺的意思

ES6中的promise的出现给我们很好的解决了ES5中回调地狱的问题

什么叫ES5回调地狱:在使用ES5的时候,在多层嵌套回调时,写完的代码层次过多,很难进行维护和二次开发

ES6认识到了这点问题,现在promise的使用,完美解决了这个问题。那我们如何理解promise这个单词在ES5中的作用那,你可以想象他是一种承诺,当它成功时执行一些代码,当它失败时执行一些代码。它更符合人类的行为思考习惯,而不在是晦涩难懂的冰冷语言。

promise的基本用法

参数:

  1. resolve 执行成功回调
  2. reject:执行失败回调

promise执行多步操作非常好用,那我们就来模仿一个多步操作的过程,那就以吃饭为例吧。要想在家吃顿饭,是要经过三个步骤的。
1、洗菜做饭。
2、坐下来吃饭。
3、收拾桌子洗碗。

这个过程是有一定的顺序的,你必须保证上一步完成,才能顺利进行下一步。我们可以在脑海里先想想这样一个简单的过程在ES5写起来就要有多层的嵌套。那我们现在用promise来实现。

  1. let state = 1; // 状态,表示是否完成
  2. let step1 = (resolve, reject)=>{
  3. console.log('1、洗菜做饭。');
  4. if (state == 1){
  5. resolve('1 完成');
  6. }else{
  7. reject('1 失败');
  8. }
  9. }
  10. let step2 = (resolve, reject)=>{
  11. console.log('2、坐下来吃饭。');
  12. // state = 2; // 此操作是为了模拟第二步失败
  13. if (state == 1){
  14. resolve('2 完成');
  15. }else{
  16. reject('2 失败');
  17. }
  18. }
  19. let step3 = (resolve, reject)=>{
  20. console.log('3、收拾桌子洗碗。');
  21. if (state == 1){
  22. resolve('3 完成');
  23. }else{
  24. reject('3 失败');
  25. }
  26. }
  27. // 三个then代表三个步骤的回调处理
  28. new Promise(step1).then((val)=>{
  29. console.log('step1:', val);
  30. return new Promise(step2); // 第一步执行完毕,执行第二步
  31. }).then((val)=>{
  32. console.log('step2:', val);
  33. return new Promise(step3); // 第一步执行完毕,执行第二步
  34. }).then((val)=>{
  35. console.log('step3:', val);
  36. // 第三步执行完毕,将不再做任何操作
  37. });

Promis在现在的开发中使用率算是最高的,而且你面试前端都会考这个对象,大家一定要掌握好。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注