首页 > 其他分享 >使复杂异步方法变为同步。用promise阻塞

使复杂异步方法变为同步。用promise阻塞

时间:2023-05-17 09:23:38浏览次数:34  
标签:function 异步 console log await 阻塞 promise

使复杂异步方法变为同步

假如有一个function async Father(){await A();await b()},
需要等方法A执行完,再继续往下执行B的代码,而A()中有很多东西,可能会导致异步。

可在A()内写成promise(resolve()),在A()内所有方法执行完毕后,再执行promise的resolve(),
使得Father()在等到A()的resole才执行B()

function async Father(){
  console.log('111')
  await A()
  console.log('222')
  await B()
}

function A(){
  return new Promise(async (r, l) => {
    //里面需要执行的各种代码
    console.log('A结束')
    r()
  }
}

function B(){
  console.log('B开始')
  console.log('B结束')
}

最后打印结果
111 A开始 A结束 222 B开始 B结束

标签:function,异步,console,log,await,阻塞,promise
From: https://www.cnblogs.com/biuo/p/17407503.html

相关文章

  • 异步消息的传递-回调机制
    1什么是回调软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消......
  • C#异步方法async/await的三种返回类型
    有群友问C#异步方法async返回值Task和void的区别?看似简单,但不容易把它们用好。在C#中的异步编程已经成为现代编程的标配,异步方法(async/await)是实现异步编程的一种常用方式。在异步方法中,可以使用Task或void作为返回类型,还可以使用ValueTask返回类型。本文将介绍异步方法中3个......
  • 模拟实现Promise
     Code:varMiniPromise=(functionMiniPromiseWrapper(){constPENDING='pending';constFULFILLED='fulfilled';constREJECTED='rejected';const_state=Symbol('state');const_result=Symbol(�......
  • C#异步有多少种实现方式?
    思维导航前言.NET异步编程模式C#异步有四种实现方式参考文章前言微信群里的一个提问引发的这个问题,有同学问:C#异步有多少种实现方式?想要知道C#异步有多少种实现方式,首先我们要知道.NET提供的执行异步操作的三种模式,然后再去了解C#异步实现的方式。.NET异步编程......
  • 三相异步电机基于空间矢量SVPWM的直接转矩 SVPWM- DTC控制
    三相异步电机基于空间矢量SVPWM的直接转矩SVPWM-DTC控制Matlab/Simulink仿真模型(成品)采用SVPWM的直接转矩控制1.转速环、转矩环、磁链环均采用PI控制2.采用空间矢量SVPWM调制3.含磁链观测、转矩控制、开关状态选择等4.相比于传统DTC控制,转矩的脉动更小如图所示ID:8320067452378......
  • 三相异步电机本体模型 Matlab/Simulink仿真模型(成品) 本模型利
    三相异步电机本体模型Matlab/Simulink仿真模型(成品)本模型利用数学公式搭建了三相异步电机的模型,可以很好的模拟三相异步电机的运行性能,适合研究电机本体时修改参考,电机的各波形都很好可以很好的模拟三相电机ID:1550674841299704......
  • 三相异步电机直接转矩DTC控制 Matlab/Simulink仿真模型(成品) 传统
    三相异步电机直接转矩DTC控制Matlab/Simulink仿真模型(成品)传统策略DTC1.转速环采用PI控制2.转矩环和磁链环采用滞环控制3.含扇区判断、磁链观测、转矩控制、开关状态选择等ID:64100674198029914......
  • Unity 热更新学习笔记二:异步加载
    在学习异步加载前应该学习一下Untiy中如何进行性能分析为什么热更新要学习性能分析?在热更新的过程其实也就是一种资源加载的过程,而涉及到资源加载就不得不提性能分析。因为资源的加载通常是异步加载的,如果把资源都统合在一起加载游戏界面就会卡住,这是我们不希望发生的事情。Unt......
  • 20230515学习笔记——js中的同步任务与异步任务,宏任务与微任务
    2023-05-15(1)js中的同步任务与异步任务①同步任务是指:不耗时的任务,就是执行很快,②异步任务是指:耗时的任务,它里面有一个机制是EventLoop(事件循环),即值耗时任务会被js分配到宿主环境中进行执行,执行后的结果放到一个“消息队列”中,当js将同步任务执行完毕后,才会调用异步环境。在消......
  • ET框架6.0分析二、异步编程
    概述ET框架很多地方都用到了异步,例如资源加载、AI、Actor模型等等。ET框架对C#的异步操作进行了一定程度的封装和改造,有一些特点:显式的或者说强调了使用C#异步实现协程机制(其实C#的异步编程天生就能实现这种用法)强制单线程异步没有使用C#库的Task,自己实现了ETTask等类实现了......