Promise
回调函数 把 函数 作为 参数
回调函数 嵌套 回调函数 -----形成 回调地狱 ES6新增 解决 异步回调地狱
Promise 解决 异步回调
Promise 是一个 构造函数
Promise有三个状态 等待padding 完成resolved(fulfilled) 失败 rejected
状态一旦改变就不能再变化 变成功后不能变回失败 变失败后不能变回成功
Promise对象有 then 和 catch 方法
async 是异步函数/promise的终结者
function前面加async,说明该函数是一个异步函数,必须和await 一起使用 await 后面的函数返回的是promise对象
await 等待 等待await后面的异步函数执行完 再执行await下面的代码
注意:await并不是将异步函数变成同步函数,只是改变了异步函数的调用方式。
async和await的缺点,怎么处理await返回的错误,
因为在awite在转换promise对象时,会吞并promise的错误,我们可以利用原生JS的try,catch进行抛出异常抛出异常
throw new Error
async/await的优缺点
它是把异步请求变成同步执行的.async放在最近函数外调用,返回的是promise对象
1.方便级联调用:即调用依此发生的场景;
2.同步代码编写方式:Promise使用then函数进行链式调用,一直....;
async/await从上到下,顺序执行,就像写同步代码一样,更符合代码编写习惯
缺点: 没有catch错误处理,需要js原生的try【踹爱】,catch进行错误处理
构造函数
内置构造函数:
new Object new Array new Date new RegExp
new Promise
构造函数 --也是函数 ,跟普通函数不同的是首字母大写 --- 创建对象的
function Stseudent(name,age,cide){ this.name = name this.age = age this.code = code } | |
let p = new Promise((resolve,reject)=>{ // 异步编程 //异步执行成功 执行resolve(then) 失败执行reject(catch) //同时把结果通过resolve 或者 reject的参数返回出去 setTimeout(()=>{ resolve(3)},2000) }) p.then(res=>{ consele.log(res)}) .catch(err=>{ consele.log(err)}) consele.log(p) |
自定义构造函数:
1.new 创建一个对象
2.调用Students这个函数,把new创建的对象赋值给this
3.给创建的对象通过 .的方式添加属性,属性值为传递的参数
4.默认返回创建的对象
let oA = new Student('zs',12,1001) log(oA) let oB = new Student('ls',34,1002) log(oB) | |