1.15async 函数

async函数返回Promise,await用于等待Promise解析,使得异步编程更像同步代码,避免回调地狱。await不仅限于Promise,也可等待其他值,非Promise会自动包装。async/await是Promise的补充,提供更简洁的异步控制流。
摘要由CSDN通过智能技术生成

async

  • promise 使用 .then 链式调用,但也是基于回调函数
  • async/await 更加优雅的异步编程的写法
    1.它是消灭异步回调的终极武器
    2.它是同步语法,也就是用同步的写法写异步的代码

返回值

async 函数返回一个 Promise 对象,可以使用 then 方法添加回调函数。

 

async 函数中可能会有 await 表达式,async 函数执行时,如果遇到 await 就会先暂停执行 ,等到触发的异步操作完成后,恢复 async 函数的执行并返回解析值

await

await 操作符用于等待一个 Promise 对象, 它只能在异步函数 async function 内部使用

 

expression: 一个 Promise 对象或者任何要等待的值

返回值

返回 Promise 对象的处理结果。如果等待的不是 Promise 对象,则返回该值本身。

如果一个 Promise 被传递给一个 await 操作符,await 将等待 Promise 正常处理完成并返回其处理结果。

正常情况下,await 命令后面是一个 Promise 对象,它也可以跟其他值,如字符串,布尔值,数值以及普通函数。

await针对所跟不同表达式的处理方式:

  • Promise 对象await 会暂停执行,等待 Promise 对象 resolve,然后恢复 async 函数的执行并返回解析值。
  • 非 Promise 对象直接返回对应的值。

【async/await和promise的关系】

async/await

async 字面意思异步 async用于声明一个异步函数

没有 await 的情况下执行 async 函数,它会立即执行,返回一个 Promise 对象,并且,绝不会阻塞后面的语句。这和普通返回 Promise 对象的函数并无二致。

await 用于等待一个异步函数执行完成,并且语法规定,await只能在async函数里面被使用,如果需要用await等待一个async异步函数完成 ,需要在外面在包裹一层async…

await 不仅仅用于等 Promise 对象,它可以等任意表达式的结果,所以,await 后面实际是可以接普通函数调用或者直接量的。等待这个操作完成才能进行await语句下面的程序

async/await是一个语法糖,使代码更加优雅,用同步的语句编写异步的代码,消灭异步回调

async/await和promise的关系

async/await ,和promise都可以异步编程,async/await相辅相成

  • async/await 是消灭异步回调的终极武器
  • 和Promise并不排斥,两者相辅相成
  • 执行 async 函数,返回的是 Promsie 对象
  • await 相当于 Promise 的 then ,then指的是成功,不指失败
  • try…catch 可捕获异常,代替了 Promise的 catch
     

await

  • await后面跟的不是promise对象,会将其他值包装成一个promise对象

await 接 Promise

1.await p1相当于是 p1.then,只是成功态的then
2.await 和 then 的区别就是:then还需要传回调进去,但 await 可以直接得到值

await 和 .then 的区别

await 接 async 函数

 

await 接数值

await接空对象

1.什么都打印不出来
2.因为 new Promise 里面没有任何状态改变,而await一直在等待状态改变
3.只有状态改变了,await才会允许执行后面的代码

await接promise为error

1.会出现报错
2.await相当于成功态的 .then ,都没有成功,因此不会执行后面的代码
3.因为JS是单线程的
4.解决:使用 try…catch 偷偷解决掉 error,保证代码运行
——捕获到错误就不会影响后面的输出


async 和 await(详解)_一生注定学霸命的博客-CSDN博客_async await

【async/await和promise的关系】_Didicode的博客-CSDN博客_await 后面不跟promise

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值