JS中如何使用async与await

发布时间:2021-12-29 12:39:16 作者:小新
来源:亿速云 阅读:152

小编给大家分享一下JS中如何使用async与await,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一、async

async创建一个异步函数来定义一个代码块,在其中运行异步代码;

怎样变成异步函数呢?以 async 这个关键字开始,它可以被放置在一个函数前面

async function f() {
  return 1;
}
 
f().then(alert); // 1
 
//上下结果一样
 
async function f() {
  return Promise.resolve(1);
}
 
f().then(alert); // 1
 
//也可以用箭头函数
let hello = async () => { return "1" };
hello().then((value) => console.log(value))
//返回值也可以简化成这样
hello().then(console.log)

异步函数的特征之一:保证函数的返回值为 promise

async 关键字加到函数申明中,可以告诉它们返回的是 promise,而不是直接返回值。此外,它避免了同步函数为支持使用 await 带来的任何潜在开销。

二、await:

await 只在异步函数里面才起作用。它可以放在任何异步的,关键字 await JavaScript 引擎等待直到 promise 完成并返回结果。在等待promise的同时,其他正在等待执行的代码就有机会执行了。

您可以在调用任何返回Promise的函数时使用 await,包括Web API函数。

async function f() {
  let promise = new Promise((resolve, reject) => {
    setTimeout(() => resolve("咚!"), 1000)
  });
 
  let result = await promise; // 等待执行,直到 promise resolve 执行完
 
  alert(result); // "咚!"
}
 
f();//拿到 result 作为结果继续往下执行。所以上面这段代码在1秒后显示 “咚!”。

注意:await 实际上会暂停函数的执行,直到 promise 状态变为 完成,然后以 promise 的结果继续执行。这个行为不会耗费任何 CPU 资源,因为 JavaScript 引擎可以同时处理其他任务:执行其他脚本,处理事件等。

三、综合应用

有了async/await就去除了到处都是 .then() 代码块,因为await会等待了。

async function A() {
  let response = await fetch('c.jpg');
  let myBlob = await response.blob();
 
  let objectURL = URL.createObjectURL(myBlob);
  let image = document.createElement('img');
  image.src = objectURL;
  document.body.appendChild(image);
}
 
A()
.catch(e => {
  console.log('问题: ' + e.message);
});

用更少的.then()块来封装代码,同时它看起来很像同步代码,所以它非常直观。这样用的很爽!

以上是“JS中如何使用async与await”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. vue中async-await如何使用
  2. Async与Await函数怎么在Node.js中使用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

js async await

上一篇:java如何判断各类型字符个数

下一篇:SpringBoot多线程@Async怎么用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》