js中的async,await用法
原创async/await是Promise的语法糖
async
- async作为一个关键字,放在函数前面表示该函数是一个异步函数。
- async函数 返回一个 Promise对象 ,并且是resolve结果,可以使用。then方法添加了一个回调函数。
-
只要使用async,无论函数是否在内部返回。Promise对象,将被打包Promise对象。
// async基础语法 async function fun0(){ console.log(1); return 1; } fun0().then(val=>{ console.log(val) // 1,1 })
async function fun1(){ console.log(Promise); return new Promise(function(resolve,reject){ resolve(Promise) }) } fun1().then(val => { console.log(val); // Promise Promise })
await
-
await 它也是一个修饰符,只能放在async在定义的函数内。
-
await 装饰IFPromise对象:你可以得到。Promise()中返回的内容resolve或reject参数),在取值之前不会执行该语句;
-
如果不是Promise对象:将此非promise事变await表达式的结果。
async function fun(){ let a = await 1; let b = await new Promise((resolve,reject)=>{ setTimeout(function(){ resolve(setTimeout) },3000) }) let c = await function(){ return function }() console.log(a,b,c) } fun(); // 3秒后输出: 1 "setTimeout" "function"
function log(time){ setTimeout(function(){ console.log(time); return 1; },time) } async function fun(){ let a = await log(1000); let b = await log(3000); let c = log(2000); console.log(a); console.log(1) } fun(); // 立即输出 undefined 1 // 1秒后输出 1000 // 2秒后输出 2000 // 3秒后输出 3000
async,await配合
// 使用async/await获得成功的结果
// 定义一个异步函数,3只有在几秒钟后才能获得该值。(相似操作数据库)
function getSomeThing(){
return new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve(获取成功)
},3000)
})
}
async function test(){
let a = await getSomeThing();
console.log(a)
}
test(); // 3秒后输出:获取成功
异常处理
await以下功能可能会出现异常,因此最好是await命令放在try…catch一段代码。如果await后是Promise对象,您还可以使用.catch抓捕。
// 第一种写作方式
async function myFunction() {
try {
await something();
} catch (err) {
console.log(err);
}
}
// 第二种书写方法
async function myFunction() {
await somethingPromise()
.catch(function (err) {
console.log(err);
});
} 版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123


