(直接上代码讲)
//之前promise的写法 function fn1(){ new Promise(function(resolve,reject){ resolve{'gyygyygyygyygyy'} }) } fn1().then(res =>{ console.log(res); }) //promise顺序执行 //async,await 只有异步才执行 //加上async,返回promise对象 async function fn(){ return 'gyyshitaiyang'; } //promise没有任何返回值 var data = fn().then(res =>{ console.log(res); }); console.log(data); /* *****和await的结合***** */ //anync 必须修饰函数 //await 必须出现在async的修饰函数中 //添加await 会等待promise的执行 async function test(){ const data = await'lalallal'; console.log(data,6666); return data; } console.log(test()); /* *********和promise的结合*********** */ function say(){ return new Promise(function(resolve,reject){ //延时器1s之后执行 setTimeout(function(){ let age = 24 resolve(`hello,cf.今年${age}岁`) },1000) }) } async function demo(){ //等待Promise执行完成 let data = await say(); console.log(data); } // demo(); // 失败的状态 function say() { return new Promise(function (resolve, reject) { setTimeout(function () { let age = 24 reject(`hello, joel,发生了异常。今年我 ${age} 岁`); }, 1000); }); } async function demo() { try { const v = await say(); // 输出:hello, joel,发生了异常。今年我 24 岁 等待这个say 的异步,如果成功把回调 resole 函数的参数作为结果 console.log(v); } catch (e) { console.log(e) } } demo();总结: 1、async告诉程序这是一个异步,awiat会暂停执行async中的代码,等待await表达式后面的结果,跳过as ync函数,继续执行后面代码。 2、async函数会返回一个Promise对象,那么当async函数返回一个值时,Promise 的resolve方法会负责传递这个值;当async函数抛出异常时,Promise的reject方法也会传递这个异常值。 3、3await操作符用于等待一个Promise对象,并且返回Promise对象的处理结果(成功把resolve函数参数作为await表达式的值),如果等待的不是 Promise 对象,则用 Promise.reso1ve(xx)转化。
