# Promise **Repository Path**: xorangex/promise ## Basic Information - **Project Name**: Promise - **Description**: Promise学习 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-04-26 - **Last Updated**: 2024-05-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: Promise ## README ### 异步编程 * fs 文件操作 ```js require('fs').readFile('./index.html', (err, data) => {}) ``` * 数据库操作 * Ajax ```js $.get('/server', (data)=>{}) ``` * 定时器 ```js setTimiout(()=>{ }, 1000) ``` promise支持链式调用,可以解决地狱回调的问题 promise是ES6引入的异步编程新的解决方案 从语法上来说它是一个构造函数, 可以实例化对象,封装异步操作,获取成功或失败的结果 其优点是:支持链式调用,可以解决回调地狱问题、指定回调的方式更为灵活 ### promise 的状态 实例对象中的一个属性 [PromiseState] * pending 未决定的 * resolved (fulfilled) 成功 * rejected 失败 ## promise 对象的值 实例对象中的另一个属性 [PromiseResult] 保存着异步任务 [成功/失败] 的结果 * resolve * reject ### promise 的状态改变 1. pending 变为 resolved 2. pending 变为 rejected 说明:只有这 2 种,且一个 promise 对象只能改变一次 无论变为成功还是失败,都会有一个结果数据 成功的结果数据一般称为 value,失败的结果数据一般称为 reason ### 一、promise的状态 1. 初始状态:pending 2. 成功状态:fulfilled 3. 失败状态:rejected ```js /** * promise 实例化对象的状态只能从pending变为fulfilled或rejected * 且状态一旦改变,就不会再变 * 1. pending变为fulfilled * 2. pending变为rejected */ // 1. 创建promise对象 const p1 = new Promise((resolve, reject) => { // 调整状态 resolve('ok') reject('error') }) console.log(p1); ``` 二、promise的基本使用 1、then的方法 1. 成功:非promise类型的属性 2. 失败:失败的promise类型的对象 3. 异常:失败的promise类型的对象 promise的链式调用