前言
@azure/core-lro 是一款面向 Azure 云服务的 npm 包,主要作用是帮助开发者处理长时间运行 (Long Running Operation,简称 LRO) 的任务。
LRO 操作包括但不限于、创建、更新、删除资源等,由于 LRO 操作需要一定的时间才能完成,因此我们需要使用异步编程方式处理此类操作。而 @azure/core-lro 提供了一种简化异步操作的方式,用于加速开发流程。
本文将为读者介绍 npm 包 @azure/core-lro 的基础使用方式,并通过示例代码及详细解释,帮助读者更好地理解这一 npm 包的使用方法。
正文
安装
在 npm 仓库中,@azure/core-lro 的安装方式很简单,只需要使用以下命令:
--- ------- ---------------
该命令将自动从 npm 仓库中下载并安装最新版本的 @azure/core-lro 包。
使用
引入 @azure/core-lro 包:
----- - --------- - - ---------------------------
其中 LROPoller 是 @azure/core-lro 包提供的一个核心类,用于处理 LRO 操作。
在使用 LROPoller 处理 LRO 操作时,我们需要先实例化 LROPoller 类,并为其指定需要处理的 LRO 操作、操作类型、以及操作完成后的处理回调函数等参数。
下面通过一个简单的创建 Azure 资源的案例,展示如何使用 LROPoller。
创建 Azure 资源
创建 Azure 资源的过程中,我们需要先创建一个 resource group(资源组),再创建名为 "sample-resource" 的资源。
----- - ----- - - --------------------------- ----- - --------- - - --------------------------- ----- ------ - --- ------------------------------------------- ---------------- ----- ---------- - - --------- --------- ----------- - ----------- - ------ - -- -------------- - -- ----- ----------------- - ------------------ ----- ------------------------- - --------------------- ----- ------------------ - --- ----- ------------ - ----------------- ----- ------------ - ------------------ ----- ---------- - --------------------- ----- -------------------- - ----- ------------------------------------- ------------------ -------------------------- ------------------- ------------- ------------- ----------- ---------- -- ----- --------- - --- ----------- ----------------- --------------------- ------------- ----- ---------------- ----- -- -- - ------ ----- ------------------------------------ - ---
在上面的代码中,我们首先使用 Azure 套件提供的 ResourceManagementClient 类,获取资源管理的客户端对象。该客户端对象提供了多种操作方法,包括创建资源、更新资源、获取资源等操作。接下来,我们使用资源管理客户端对象中的 beginCreateOrUpdate 方法创建一个 resource group,然后在创建 resource group 完成后,即可开始创建 "sample-resource" 资源。创建 "sample-resource" 资源需要首先获得 LRO 操作的 PolledOperation 实例,然后再利用该实例按步骤实现 LRO 操作的处理过程。
在上面的代码中,我们首先实例化一个 LROPoller 类,然后为其指定好所需参数。其中,initialOperation 参数是必须指定的,它表示第一次执行 LRO 操作;intervalInMs 参数表示每次轮询的时间间隔,单位为毫秒;updateOperation 参数表示在执行 LRO 操作过程中,如何获取 LRO 操作的状态。
最后,我们可以通过事件 (event) 或回调函数 (callback) 的方式获取 LRO 操作的最终结果。下面给出事件的写法示例:
---------------------------- -- - ------------------------- ------- --------------------------- --- ----------------------------- -- - ----------------------- ---------------------------- ---
示例代码
完整的创建 Azure 资源的代码如下:
----- - ----- - - --------------------------- ----- - --------- - - --------------------------- ----- -------- ------ - ----- ------ - --- ------------------------------------------- ---------------- ----- ---------- - - --------- --------- ----------- - ----------- - ------ - -- -------------- - -- ----- ----------------- - ------------------ ----- ------------------------- - --------------------- ----- ------------------ - --- ----- ------------ - ----------------- ----- ------------ - ------------------ ----- ---------- - --------------------- ----- -------------------- - ----- ------------------------------------- ------------------ -------------------------- ------------------- ------------- ------------- ----------- ---------- -- ----- --------- - --- ----------- ----------------- --------------------- ------------- ----- ---------------- ----- -- -- - ------ ----- ------------------------------------ - --- ---------------------------- -- - ------------------------- ------- --------------------------- --- -------------------------- -------- -- - ----------------------- ---------------------------- -- --- ----------- -- ----------------- ------- ----- -------------- - ----- --------------------- ------------------ ------------------------------------ ----------------- -- ------------------------------------------ ----- ---- --- -
结论
@azure/core-lro 是一款能够帮助开发者简化 LRO 操作的 npm 包,我们可以利用该包,使用异步编程模型来处理异步的 LRO 操作。在使用过程中,我们可以根据具体的业务需求,为 LROPoller 实例指定合适的 initialOperation、intervalInMs、updateOperation 参数,以及各种回调函数等,在实现 LRO 操作的过程中,该包能够为开发者提供便利和实用的支持。
本文主要介绍了如何使用 @azure/core-lro 包实现一个简单的 Azure 资源创建过程,若读者有需要,可以在此基础上进一步探索和开发相关应用场景。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/5eedab55b5cbfe1ea061072b