前端 js 经典:async 和 await

简介: 前端 js 经典:async 和 await

1. 什么是 async

async 作为一个关键字放到函数前面,用于表示函数是一个异步函数。异步函数也就意味着该函数的执行不会阻塞后面代码的执行。

async 函数返回的是一个 Promise 对象

2. 怎么用

// 调用fn返回的是promise对象,如果我们要拿到返回值,用then,如果返回错误,用catch
async function fn(flag) {
  if (flag) {
    return "success";
  } else {
    throw "faild";
  }
}
fn(true)
  .then((res) => {
    console.log(res);
  })
  .catch((err) => {
    console.log(err);
  });

3. 什么是 await

await 后面可以放任何表达式,不过正常情况下还是放一个返回 promise 对象的表达式。

await 关键字只能放在 async 函数里

// 延时函数delay
const delay = (time) =>
  new Promise((resolve) => {
    setTimeout(resolve, time);
  });
 
// f() 异步函数就完美的解决了回调函数问题
async function f() {
  await delay(1000);
  await delay(2000);
  await delay(3000);
  return "done";
}
 
// 6秒后打印结果 done
f().then((data) => {
  console.log(data);
});

4. try...catch

await 后的 promise 对象报错怎么办,页面不可能一直卡在那不动,这对于用户体验是很不友好的。那么 try...catch 应运而生

let faildPro = new Promise((resolve, reject) => {
  reject("失败啦");
});
 
async function resultFn() {
  try {
    let result = await faildPro;
    return result;
  } catch (err) {
    throw err;
  }
}
 
resultFn()
  .then((res) => {
    console.log(`返回体:${res}`);
  })
  .catch((err) => {
    console.log(`错误信息:${err}`);
  }); // 错误信息:失败啦


目录
相关文章
|
10月前
|
前端开发 JavaScript
JavaScript中的Async/Await:简化异步编程
JavaScript中的Async/Await:简化异步编程
500 109
|
10月前
|
前端开发 JavaScript API
JavaScript异步编程:从Promise到async/await
JavaScript异步编程:从Promise到async/await
713 204
|
11月前
|
前端开发 JavaScript
JavaScript异步编程:从回调地狱到Async/Await
JavaScript异步编程:从回调地狱到Async/Await
|
11月前
|
前端开发 JavaScript
JavaScript异步编程:从回调地狱到Async/Await优雅进化
JavaScript异步编程:从回调地狱到Async/Await优雅进化
|
11月前
|
前端开发 JavaScript
JavaScript异步编程:从Callback到Async/Await的进化
JavaScript异步编程:从Callback到Async/Await的进化
|
JavaScript 前端开发 API
|
前端开发 JavaScript 数据可视化
58K star!这个让网页动起来的JS库,前端工程师直呼真香!
Anime.js 是一款轻量级但功能强大的JavaScript动画引擎,它能够以最简单的方式为网页元素添加令人惊艳的动效。这个项目在GitHub上已经获得58,000+星标,被广泛应用于电商页面、数据可视化、游戏开发等场景。
655 8
|
前端开发 JavaScript 网络协议
前端最常见的JS面试题大全
【4月更文挑战第3天】前端最常见的JS面试题大全
414 5

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    1203
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    537
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    418
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    414
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    525
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    705
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    1295
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    300
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    1077
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    491