

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Wait 工作流程状态
Wait

**管理状态和转换数据**  
了解如何[使用变量在状态之间传递数据](workflow-variables.md)和[使用 JSONata 转换数据](transforming-data.md)。

`Wait` 状态 (`"Type": "Wait"`) 使状态机延迟指定的时间，然后再继续。您可以选择一个相对时间，指定从状态开始后的秒数；也可以选择以时间戳的方式指定绝对结束时间。

除了[常用状态字段](statemachine-structure.md#amazon-states-language-common-fields)之外，`Wait` 状态还具有以下字段之一。

** `Seconds` **  
启动 `Next` 字段中指定状态之前等待的时间，以秒为单位。时间必须指定为介于 0 到 99999999 之间的整数值。在 JSONata 状态下，您也可以指定一个 JSONata 表达式，该表达式的计算结果必须为指定范围内的整数。

** `Timestamp` **  
一个绝对时间，等到该时间后再启动 `Next` 字段中指定的状态。  
时间戳必须遵循 ISO 8601 的 RFC3339 配置文件，并有进一步的限制，需要使用大写 `T` 分隔日期和时间部分，大写 `Z` 必须表示没有数字时区偏移，例如 `2024-08-18T17:33:00Z`。  
在 JSONata 状态下，您可以指定一个 JSONata 表达式，该表达式生成符合先前要求的字符串。  
当前，如果您将等待时间指定为时间戳，Step Functions 会选取秒以内的时间值并截断毫秒。

** `SecondsPath`（可选，仅限 JSONPath） **  
状态输入数据中指向一个整数值的[路径](concepts-input-output-filtering.md)，该值指定继续执行下一状态前的等待时间（以秒为单位）。

** `TimestampPath`（可选，仅限 JSONPath） **  
状态输入数据中指向一个绝对日期和时间（时间戳）的[路径](concepts-input-output-filtering.md)，以此作为继续执行下一状态前的等待时长。

**注意**  
您必须且只能指定以下之一：`Seconds`、`Timestamp`、`SecondsPath` 或 `TimestampPath`。此外，您可以为标准工作流和快速工作流指定的最长等待时间分别为一年和五分钟。

## Wait 状态示例


以下 `Wait` 状态向状态机中引入 10 秒的延迟。

```
"wait_ten_seconds": {
  "Type": "Wait",
  "Seconds": 10,
  "Next": "NextState"
}
```

在下一个示例中，`Wait` 状态等待直至绝对时间：2024 年 3 月 14 日凌晨 1:59 (UTC 时间)。

```
"wait_until" : {
  "Type": "Wait",
  "Timestamp": "2024-03-14T01:59:00Z",
  "Next": "NextState"
}
```

您不必对等待持续时间进行硬编码。例如，给定以下输入数据：

```
{
  "expirydate": "2024-03-14T01:59:00Z"
}
```

您可以使用引用[路径](concepts-input-output-filtering.md)从输入中选择“expirydate”值，以便从输入数据选择该值。

```
"wait_until" : {
    "Type": "Wait",
    "TimestampPath": "$.expirydate",
    "Next": "NextState"
}
```