1.promise作用:
promise:解决异步回调的问题
2.目的:
创建异步对象,当异步对象中的异步操作执行完成之后,再执行想要执行的东西。
resolve表示将状态变成成功完成,reject表示将状态变成失败完成 当resolve方法执行完成之后,再执行then方法 let p = new Promise((resolve, reject) => { setTimeout(() => { console.log('执行完毕'); resolve(); // 表示完成 }, 3000) }) p.then(() => { console.log('promise异步操作完成了'); })
Promise在实际环境下的应用
“使用Promise我们可以用同步的方式写异步代码。其实Promise在实际的应用中往往起到代理的作用。例如,我们像我们发出请求调用服务器数据,由于网络延时原因,我们此时无法调用到数据,我们可以接着执行其它任务,等到将来某个时间节点服务器响应数据到达客户端,我们即可使用promise自带的一个回调函数来处理数据。”
async/await特点
1.async/await更加语义化,async 是“异步”的简写,async function 用于申明一个 2.function 是异步的; await,可以认为是async wait的简写, 用于等待一个异步方法执行完成;
3.async/await是一个用同步思维解决异步问题的方案(等结果出来之后,代码才会继续往下执行)
4.可以通过多层 async function 的同步写法代替传统的callback嵌套
async function语法
自动将常规函数转换成Promise,返回值也是一个Promise对象
只有async函数内部的异步操作执行完,才会执行then方法指定的回调函数
异步函数内部可以使用await
多个await命令的异步操作,如果不存在依赖关系(后面的await不依赖前一个await返回的结果),用Promise.all()让它们同时触发
function test1 () { return new Promise((resolve, reject) => { setTimeout(() => { resolve(1) }, 1000) })}function test2 () { return new Promise((resolve, reject) => { setTimeout(() => { resolve(2) }, 2000) })}async function exc1 () { console.log('exc1 start:',Date.now()) let res1 = await test1(); let res2 = await test2(); // 不依赖 res1 的值 console.log('exc1 end:', Date.now())}async function exc2 () { console.log('exc2 start:',Date.now()) let [res1, res2] = await Promise.all([test1(), test2()]) console.log('exc2 end:', Date.now())}exc1();exc2();