# day007 **Repository Path**: yang-wanting/day007 ## Basic Information - **Project Name**: day007 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-11-03 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### 第七天总结: ###### 1,为什么要进行封装API代码? 把代码封装起来,可以解决代码冗余的问题;请求地址中如果有突然变化的话,也就是说本来有很多的页面,突然进行改动,这个时候,封装代码就可以提高代码的可维护性;封装独立的模块,可以在多个组件中实现共享。 ###### 2,组件化,模块化的区别: 组件化是针对与UI界面来说的,可以把多个界面分成多个小组件;而模块化则是针对业务逻辑来说的,如登录注册页面、购物车界面逻辑来说的。 #### 3,http和https的区别: https虽然看起来仅仅比http多了一个s,但是https 比它多了一份验证环节,通过这个验证环节,就可以大大的提升安全校验的问题。 #### 4,promise的理解: 1,promise是什么? promise是一个对象,对象和函数的区别就是对象可以保存状态,函数不可以(闭包除外),并未剥夺函数return的能力,因此无需层层传递callback,进行回调获取数据,多个异步操作等待合并便于解决。 2,promise的作用? 它主要用于异步计算;可以将异步操作队列化,按照期望的顺序进行,返回符合预期的效果;可以在对象之间传递和操作promise,帮助我们处理队列化的问题。 ``` new Promise( function (resolve,reject){ 一段耗时的操作 resolve("成功时回调的操作") } ).then( (res)=>{console.log(res)}, (error)=>{console.log(error)}, ) ``` 3,promise的状态及参数: promise有三个状态: 1、pending[待定]初始状态 2、fulfilled[实现]操作成功 3、rejected[被否决]操作失败 resolve作用是,将Promise对象的状态从“未完成”变为“成功”(即从 pending 变为 resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去; reject作用是,将Promise对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。 当promise状态发生改变,就会触发then()里的响应函数处理后续步骤; promise状态一经改变,不会再变。 Promise对象的状态改变,只有两种可能: 从pending变为fulfilled 从pending变为rejected。 这两种情况只要发生,状态就凝固了,不会再变了。 4,promise以上操作后会继续进行.then; ``` new Promise(resolve=>{ setTimeout(()=>{ resolve('LeeSuKe') },2000) }).then(res=>{ console.log(res) }) ``` .then() 1、接收两个函数作为参数,分别代表fulfilled(成功)和rejected(失败) 2、.then()返回一个新的Promise实例,所以它可以链式调用 3、当前面的Promise状态改变时,.then()根据其最终状态,选择特定的状态响应函数执行 4、状态响应函数可以返回新的promise,或其他值,不返回值也可以我们可以认为它返回了一个null; 5、如果返回新的promise,那么下一级.then()会在新的promise状态改变之后执行 6、如果返回其他任何值,则会立即执行下一级.then()