# Js中error处理
- Error 所有错误的父类型
- ReferenceError 引用变量不存在
- TypeError 数据类型不存在
- RangeError 数据值不在允许范围内
- SyntaxError 语法错误
错误处理
- 捕获对象 try catch
- 抛出错误 throw error
错误对象
- message属性 错误相关信息
- stack属性 函数调用栈记录信息
异步编程
- callback(回调函数)
- generator + co库
- Promise
- async + await
# Promise理解和使用
- Promise是什么
- 为什么使用Promise
- 如何使用Promise
# Promise是什么
- 抽象表达:Promise是JS中进行异步编程的新的解决方案
- 具体表达:语法上,Promise是一个构造函数。
- 功能上说:Promise对象是用来封装一个异步操作并可以获取其结果
# Promise的状态改变
- pending变为resolved
- pending变为rejected
- 说明:只有这两种,且一个Promise对象只能改变一次,无论变为成功还是失败,都会有一个结果数据。成功的结果数据一般称为value,失败的结果一般称为reson
# 为什么要用Promise 优点是什么
-
- 指定回调函数方式更加灵活,灵活的方面指的就是时间上面的问题。旧的方式必须启动异步任务前就指定,Promise可以在启动异步任务之后,或者说比如请求一个数据,三秒内可以获取结果,可是我们可以在5秒后在指定这个回调函数,去完成对应的任务。
- 支持链式调用,可以解决回调地狱问题。
- 回调地狱:回调函数嵌套调用,外部回调函数异步执行的结果是内部嵌套函数执行的条件。
- 回调地狱缺点:不方便阅读,不便于异常处理。
- 比如多个串联异步任务,第二个异步任务条件是第一个异步任务成功的结果。
终极解决方案:async/await
# 如何使用Promise
# 对应的API:
# Promise构造函数: Promise(excutor){}
- excutor函数:同步执行 (resolve,reject) => {}
- resolve函数:内部定义成功时我们调用的函数 value =>{}
- reject函数:内部定义失败时我们调用的函数 reson =>{}
- 说明:excutor会在Promise内部立即同步回调,异步操作在执行器中执行
# Promise.prototype.then()方法:(onResolved,onRejected) => {}
- onResolved函数:成功的回调函数(value) => {}
- onRejected函数: 失败的回调函数(reson) =>{}
- 说明:它最多需要有两个参数:Promise 的成功和失败情况的回调函数。最后放回一个Promise对象
# Promise.prototype.catch(onRejected)方法:
-
catch() 方法返回一个Promise,并且处理拒绝的情况。
-
catch() 方法返回一个Promise,并且处理拒绝的情况。它的行为与调用
Promise.prototype.then(undefined, onRejected)相同。
