1. //同步和异步
    2. //先执行同步代码 注意new Promise () 它处于一个准备中的状态 都是同步代码 ,产生promise对象后的then 返回成功或者失败的状态 异步代码
    3. // 这样就很容易的理解了 打印的结果就是 124 3
    4. //=========================================例子1=========================================
    5. const promise = new Promise((resolve, reject) => {
    6. console.log(1);
    7. resolve(1);
    8. console.log(2)
    9. })
    10. promise.then(() => {
    11. console.log(3)
    12. })
    13. console.log(4);
    14. //==========================================例子2=========================================
    15. //===========1. Promise.resolve(1)的then方法假如没有返回错误的 信息,后面又接了 一个catch 的方法,将会跳过该代码,继续往后执行=====================
    16. let p = Promise.resolve(1).then((res) => {
    17. console.log(res)
    18. // return 2;
    19. }).catch((err) => {
    20. return 3
    21. }).then(res => {
    22. console.log(res)
    23. })
    24. //这个返回错误信息会执行catch
    25. let p1 = Promise.resolve(1).then((res) => {
    26. // return 一个异常 就会执行错误的catch 方法
    27. return new Promise((resolve, reject) => {
    28. throw new Error('error msg')
    29. });
    30. }).catch((err) => {
    31. return 3 //值得注意的是 这个p1 打印出来是一个promise对象 同时返回一个fullfilled 的状态 值是3 你可以将return 3 看出 Promise.resolve(3) 假如我在catch 的方法什么都没有返回 打印 打印出来是一个promise对象 同时返回一个fullfilled 的状态 值是undenfined;
    32. })
    33. //==========2.假如Promise.resolve(1)的then链式编程中的then过程中 没有return,这个1 会往后传递,但是只传给第一个,后面的then 就是undefined,假如中间有一个return value 会往后传递,但是只传给他自己后面那个then====
    34. Promise.resolve(1).then((res) => {
    35. console.log(res); //1
    36. }).then((res) => {
    37. console.log(res); // undefined
    38. }).then((res) => {
    39. console.log(res); //undefined
    40. })
    41. Promise.resolve(1).then((res) => {
    42. console.log(res); //1
    43. }).then((res) => {
    44. console.log(res); // undefined
    45. return 2
    46. }).then((res) => {
    47. console.log(res); //2
    48. })
    49. // 详细请参考 promsieA+ https://promisesaplus.com/
    50. //==================3.Promise.resolve(1)的then链式编程中的then过程中 ====================
    51. Promise.resolve(1).then(2).then(Promise.resolve(3)).then(console.log)
    52. //如果链式编程中的then里面不是函数 就默认返回一个函数给他 就变成下面
    53. Promise.resolve(1).then(value=> value).then(value=> value).then(value=> value)
    54. ////finally方法里面的操作,与状态无关的,不依赖于 Promise 的执行结果,直接可以无视这行代码
    55. Promise.resolve(2).finally(() => 3).then(res => { console.log(res) })
    56. //============================================例子3===================================================================