当前位置:网站首页 > AI与大数据 > 正文

异步代码同步执行的await用法

一,普通的包含异步的函数

function test(){ 
    console.log("111") setTimeout(()=>{ 
    console.log("222") },1000) console.log("333") } test() 

实现的效果:
在这里插入图片描述

二,使用promise改写成同步

function timeOut(){ 
    return new Promise((resolve)=>{ 
    setTimeout(()=>{ 
    console.log("222") resolve() },1000) }) } async function test(){ 
    console.log("111") await timeOut() console.log("333") } test() 

结果:

> 111 > 222 > 333 

三,多层await

function timeOut(){ 
    return new Promise((resolve)=>{ 
    setTimeout(()=>{ 
    console.log("222") resolve() },1000) }) } async function test(){ 
    console.log("111") await timeOut() console.log("333") } function test2(){ 
    console.log("0000") test() console.log("4444") } test2() 

因为test2中的test里面虽然有await,但是test2中却没有,而test里有异步,所以会先执行同步代码,先000,再111,就直接到444了。

> 0000 > 111 > 4444 > 222 > 333 

三,多层await,同步需要使用await

function timeOut(){ 
    return new Promise((resolve)=>{ 
    setTimeout(()=>{ 
    console.log("222") resolve() },1000) }) } async function test(){ 
    console.log("111") await timeOut() console.log("333") } async function test2(){ 
    console.log("0000") await test() console.log("4444") } test2() 

这里主要就是把test2中的异步也是用await来处理了,因为其内部还是用了await,await返回是个resolve的promise对象,所以这里的await也是生效的。
也就是说await只会把该作用域下的异步代码转化为同步,如果外层还是需要同步执行,则还需要一个await

到此这篇异步代码同步执行的await用法的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 最新免费AI视频工具!生成6秒视频只需30秒!2024-12-01 21:00:06
  • 中英双语介绍英国(The United Kingdom)以及Great Britain为什么翻译成大不列颠?2024-12-01 21:00:06
  • 如何AI写脚本?一键生成,让视频脚本创作更简单!2024-12-01 21:00:06
  • 使用Raccoon AI写代码,同事又来围观2024-12-01 21:00:06
  • 中英双语介绍英国(The United Kingdom)以及Great Britain为什么翻译成大不列颠?2024-12-01 21:00:06
  • websocket报错DOMException: Failed to execute 'send' on 'WebSocket': Still in CONNECTING state2024-12-01 21:00:06
  • faiss数据库怎么读(数据库false什么意思)2024-12-01 21:00:06
  • faiies什么意思(faeces什么意思)2024-12-01 21:00:06
  • Faissal名字(alyssa名字)2024-12-01 21:00:06
  • aiplus12蓝牙耳机说明书(ilahui蓝牙耳机说明书)2024-12-01 21:00:06
  • 全屏图片