1.英语听力1h
2.js-promise 运行机制
由来:回调地狱问题的产生----js对于异步的处理是将异步线程放到消息队列中,在线程从队列弹出后执行,引发的问题是当主线程需要异步处理后的数据时,主线程会拿到错误数据,为解决这个问题采用了回调函数的方法,执行到回调函数后,会在执行完成后在进行后续的处理,但是在后续的处理中又需要对“数值”进行新的操作,又需要新的回调函数,形成回调地狱。由于这种嵌套的扩展性和维护性很差,为解决这个问题出现了promise。
promise (期约),总体来说解决逻辑是通过链式调用,以逻辑链的形式将处理后的“数值”一步步返回,好处是扩展性提高了,可维护性大大提高了o.0.
如何实现:
期约有三种状态1.pending2.resolve3.rejected pending->resolve or pending->rejected 这个过程是不可逆转的一个期约处理完数据后会返回一种状态,出发resolve 或者 rejected 函数执行函数体,或者使用then函数,执行then函数会缺省调用方法resolve方法
e.g.![image](https://img2023.cnblogs.com/blog/2570775/202303/2570775-20230316002200936-839243025.png)这张图片展示了promise状态的用处,当处于pending时不会调用resolve和reject函数,原因是因为在new 期约时函数体为空,使其处于pend状态
事实上在函数期约函数体中我们可以使用resolve和reject两个函数进行数据处理,期约会返回一个期约,此时我们可以使用then()接收返回的期约或使用catch函数,catch函数会在rejected被调用时触发。
我认为期约最重要的理解是对期约三种状态的理解,处于不同状态会触发不同的操作,后续处理需要调用不同的函数。
promise使用场景,当前端异步请求多组数据时,返回时可以针对不同的情况进行处理。比如一个接口的两种状态,成功或失败,成功时如何处理,失败时如何处理,有了promise就可以稳妥解决这个问题