首页 > 其他分享 >异步场景: promise、async函数与await命令介绍

异步场景: promise、async函数与await命令介绍

时间:2024-10-09 22:49:25浏览次数:17  
标签:console log await promise Promise async

如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!扫描下方名片,关注公众号,公众号更新更快,同时也有更多学习资料和技术讨论群。

在鸿蒙的开发中,我们时常会遇到promise异步场景,有同学反馈说希望提一下。

异步开发这部分的内容比较多,我不确定这位朋友具体想讨论是哪些方面,那我从两部分来讨论下,希望能提供一些帮助:

    1. 基本的开发角度,常用使用方法;

    2. 拿一个问题来讨论调用关系。

【第一部分: 基本使用】

先讨论基本的用法,异步开发中,我们一般会遇到三个关键的内容:Promise、async函数、await命令。

1、Promise

Promise可以看做一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。

从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。

  • promise异步操作有三种状态:进行中,已成功,已失败。只有异步操作才能改变这个状态。

  • promise状态一旦改变,就不会再发生变化,promise对象改变的两种可能,进行中—>已成功,进行中—>已失败

1.1 基本用法

promise对象是一个构造函数,用来生成promise实例,其中接受的参数是resolve和reject两个函数。

标签:console,log,await,promise,Promise,async
From: https://blog.csdn.net/harmonyClassRoom/article/details/142798431

相关文章

  • 手写 p-map(控制并发数以及迭代处理 promise 的库)
    介绍p-map是一个迭代处理promise并且能控制promise执行并发数的库。作者是sindresorhus,他还创建了许多关于promise的库promise-fun,感兴趣的同学可以去看看。之前提到的p-limit也是一个控制请求并发数的库,控制并发数方面,两者作用相同,不过p-map增加了对请求(promise)......
  • 对UVM添加超时前的打印信息+AXI低功耗接口+process的await语句+对象当成参数+sv的单例
    对UVM添加超时前的打印信息首先获取到UVM的超时值,然后手动设定\$time的比较和while延时循环,当超出时间后,打印特殊的debug信息。$time<set_time,则进行循环。uvm_cmdline_processorclp;clp=uvm_cmdline_processor::get_inst();stringtimeout_settings[$];stringtimeout......
  • `std::packaged_task`、`std::thread` 和 `std::async` 的区别与联系
    std::packaged_task、std::thread和std::async的区别与联系std::packaged_task、std::thread和std::async都是C++11中提供的并发工具,用于执行任务并处理多线程操作。虽然它们都有类似的作用(并发执行任务),但在功能和使用方式上有显著区别。下面分别解释它们的特点,并说明它......
  • async/await 函数到底要不要加 try catch ?
    前言写异步函数的时候,promise和async两种方案都非常常见,甚至同一个项目里,不同的开发人员都使用不同的习惯,不过关于两者的比较不是本文关注的重点,只总结为一句话:“async是异步编程的终极解决方案”。当使用async函数的时候,很多文章都说建议用trycatch来捕获异常,可是......
  • @Async你知道多少?
    我们都知道@Async是一个异步注解,用于在线程池异步执行任务,但是你真的了解其原理吗?先来一个demo:1)controllerpackagecom.zxh.controller;importcom.zxh.service.TestService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.......
  • HarmonyOs DevEco Studio小技巧24--异步编程(Promises、async/await)
    异步编程:调用后耗时,不阻塞代码继续执行,将来完成后,触发回调函数传递结果异步编程的范畴:网络请求(如使用 fetch 或 XMLHttpRequest 发送HTTP请求获取数据)。文件读写操作(读取或写入本地文件)。数据库操作(查询、插入、更新、删除数据)。定时器函数(如 setTimeout 和 setInt......
  • c# async await详解
    asyncawait传染性async/await具有传染性其实指的是你需要把异步函数的结果包装在Task类型当中。之所以c#要加async的主要原因是之前的await不是关键字,老代码可能会把await作为变量名,为了兼容性才加了async明确标识函数是continuation。await不能省略,在语义上有违直觉,为什么T......
  • Don't Block on Async Code 不要阻止异步代码
    翻译自 Don'tBlockonAsyncCode(stephencleary.com)ThisisaproblemthatisbroughtuprepeatedlyontheforumsandStackOverflow.Ithinkit’sthemost-askedquestionbyasyncnewcomersoncethey’velearnedthebasics.这是论坛和StackOverflow上反复......
  • Asynchronous AOF fsync is taking too long (disk is busy?). Writing the AOF
    一、问题描述 Redis日志:2110:M24Apr02:01:02.058*AsynchronousAOFfsyncistakingtoolong(diskisbusy?).WritingtheAOFbufferwithoutwaitingforfsynctocomplete,thismayslowdownRedis.2110:M24Apr02:01:12.862#Connectionwithslaveclientid......
  • 初步学习async/await,Task.GetAwaiter,Task.Result
    初步学习async/await,Task.GetAwaiter,Task.Result   网上关于async/await的知识有很多,看了很多但不如自己实践一遍来得快,所以这里记录下我的理解和大家学习下。  首先以最简单的同步方法来开始如下privatestaticvoidTest(){Console.Wr......