Promise 本身是同步
真正的异步是你自己在promise内部写的代码
开始实现promise
大概逻辑
1. 实例化构造函数,构造函数内部调用传入的function,把resolve和reject传给function
2. 紧接着调用then方法,把then方法上的一些函数储存起来:(成功函数,失败函数),最终then返回了一个promise,所以还要存储一个promise实例
2.1 如果是链式调用then,则全部调用,把需要的函数全部存储起来
3. 接着是你写的异步函数resolve或者reject被调用。promise内部修改状态pending --> fulfilled 表示成功,如果调用reject则状态被修改为 rejected 表示失败,状态是不可逆的,只能改一次,保证resolve和reject函数只被调用一次
4. 之后在resolve和reject函数内部使用异步处理(这里是为了防止resolve/reject 同步调用时 ,处理then方法劳动成果的代码执行在then方法之前,导致拿不到then方法的劳动成果)
5. 处理then方法的成功/失败函数,将resolve/reject的结果传入成功函数,并接收返回值,作为下一个then方法的结果传给promise.resolve,reject函数不接收返回值,直接调用当前then方法的失败函数,把错误抛出去
开始实现
先简单实现promise的这几个方法:
resolve
reject
then
catch
constructor调用传入的函数,把resolve/reject传进去
先从then方法入手
catch方法比较简单
resolve/reject
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。