# front_promise **Repository Path**: Lang_xiao_bai/front_promise ## Basic Information - **Project Name**: front_promise - **Description**: 一个零搭建的promise对象 - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-05-01 - **Last Updated**: 2022-05-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 1.什么是 promise? ``` 它是 es6 提供的异步新的解决方案,没有 promise 的时候 JS 中的异步操作函数往往通过回 调函数来实现异步任务的结果处理;从语法上来说它是一个构造函数,可以实例化对象, 封装异步操作可以获取成功与失败的节点,其优点是支持链式调用,解决回调地狱,回 调函数方式更为灵活,减少嵌套 ``` 2.什么是异步? ``` 同步按你的代码顺序执行,异步不按照代码顺序执行,异步的执行效率更高 ``` 3.异步使用场景? ``` 网络请求,如 ajax 图片加载 定时任务,如 setTime 文件读取 ``` 4.什么是回调地狱? ``` 回调函数嵌套调用,外部回调函数异步执行结果是嵌套的回调执行条件 ``` 5.回调地狱的缺点? ``` 不利于阅读,不利于异常处理 ``` 6.promise 状态 ``` 实列对象中的一个属性【PromiseState/(sdt)】状态只有两种 pending=>resolved pending=>rejected *pending 未决定 *resolved / fullfilled 成功 \*rejected 失败 ``` 7.promise 对象的值 ``` 实列对象中的另一个属性【PromsieResult】 保存着对象【成功、失败】的结果 ``` 8.promise api ``` promise (executor(rzkt)) executor 函数:执行器 (resolve,resject)=>{} resolve 函数:内部定义成功是我们调用的函数 (value)=>{} resject 函数:内部定义失败是我们调用的函数(err)=>{} 说明:executor 会在 promise 内部立即同步调用,异步在执行器里面执行 promise.prototype.then 方法:(onresolved,onresjectd)=>{} onresolved 函数:成功回调函数 onresjectd 函数:失败回调函数 说明:then 方法会返回一个新的 Promise 实例,所以可以进行链式调用, 并且 then 方法接收的是成功还是失败可以通过上一个 Promise 的状态判断。 promise.prototype.catch()方法(onresjectd)=>{} onresjectd 函数:失败回调函数 promise.resolve 方法:它是函数对象的并不属于实列对象 //如果传入的参数为非 promise 类型的对象,则返回的结果为成功的 promise 对象 //如果传入的参数为 promise 类型的对象,则参数的结果决定了 resolve 的结果 Promise.reject 方法: (reason) => {} reason: 失败的原因 说明: 返回一个失败的 promise 对象 Promise.all 方法: (promises) => {} promises: 包含 n 个 promise 的数组 说明: 返回一个新的 promise, 只有所有的 promise 都成功才成功, 只要有一个失败了就直接失败 Promise.race 方法: (promises) => {} promises: 包含 n 个 promise 的数组 说明: 返回一个新的 promise, 第一个完成的 promise 的结果状态就是最终的结果状态 ```