跳转至内容
There is a version suitable for your browser's language settings. Would you like to go to the english language of the site?
主页文档

Steps

H1

随着代码量的不断膨胀,API 内部的逻辑可能变得越来越错综复杂。使用 Steps,我们可以将复杂的逻辑分解成若干个简单的步骤,这能够提高代码的可读性,使代码结构更加清晰。

使用

在 context 中使用 step 方法,将逻辑拆分成多个步骤,每个步骤都可以返回一个对象,该对象的属性将混入 stages 中,作为下一个步骤的参数。

async action(
params: { /* ... */ },
context,
) {
const result = await context
/**
* Step 1
*/
.step(async (stages) => {
const value1 = 5;
return { value1 };
})
/**
* Step 2
*/
.step(async (stage) => {
const value2 = stage.value1 + 5;
return { value2 };
})
.run();
return result;
},

运行

当你在代码中声明了多个 step 后,你需要执行 run() 方法,以运行整个步骤。

当所有步骤都运行结束后,最终的 stage 将作为 run() 方法的返回值。例如,前文中的代码,最终 result 变量的内容为:

{ value1: 5, value2: 10 }

protected

每个步骤所返回的对象中,如果某个属性是以 $ 开头的,那么它将被保护,仅在步骤中可见,而不会出现在 run() 方法的返回值中。

你可以利用这个功能,使一些不希望公开在结果中的变量,仅在 steps 内部流转。

async action(
params: { /* ... */ },
context,
) {
const result = await context
/**
* Step 1
*/
.step(async (stages) => {
const $value1 = 5;
return { $value1 };
})
/**
* Step 2
*/
.step(async (stage) => {
const value2 = stage.$value1 + 5;
return { value2 };
})
.run();
return result;
},

最终 result 变量的内容如下,$value1 没有出现在结果中。

{ value2: 10 }

VS Code 结构

Milkio 的 VS Code 扩展能够展示你的 API 结构,在 VS Code 的侧边栏中,底部的 MILKIO STRUCTURE 折叠面板包含了 API 的结构信息。

↓ Meta
↓ Action
step: Step 1
step: Step 2
step: Step 3
↓ Tests
test: Basic

这对于浏览长篇API文件时特别有帮助,你可以通过点击某一项,迅速跳转到相关代码位置。

对于步骤(step),位于上方的多行注释(不支持单行注释)将作为步骤的名称显示,我们也推荐你为每一个步骤添加注释,以简明扼要的方式,描述该步骤所执行的具体功能。