# 是否有让进程睡眠的API

#### 问题现象

HarmonyOS中是否有让进程睡眠的API？

#### 效果预览

#### 背景知识

setTimeout可以设置一个定时器，该定时器在定时器到期后执行一个函数。

#### 解决方案

HarmonyOS中未直接提供进程睡眠的API。

方案一：可以通过setTimeout方法间接实现睡眠效果，参考如下sleep方法。

方案二：使用Atomics.wait来达到sleep效果，参考如下sleepAtomics方法。

```
@Entry
@Component
struct SleepPage {
  @State message: string = 'Hello World';

  // 睡眠等待方法，time为睡眠时间，单位毫秒
  sleep(time: number): Promise<void> {
    return new Promise(resolve => setTimeout(resolve, time));
  }

  sleepAtomics(time: number) {
    let sharedBuf = new SharedArrayBuffer(4);
    let sharedArr = new Int32Array(sharedBuf);
    Atomics.wait(sharedArr, 0, 0, time);
    this.message = 'Atomics 3000';
  }

  build() {
    Column() {
      Text(this.message)
        .id('SleepPageHelloWorld')
        .fontSize('50fp')
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })
        .onClick(() => {
          this.message = 'Welcome';
        })
      Button('Sleep修改message')
        .onClick(async () => {
          // 等待3秒
          await this.sleep(3000);
          this.message = 'SLEEP 3000';
        })
        .margin({ top: 20 });

      Button('sleepAtomics修改message')
        .onClick(async () => {
          // 等待3秒
          this.sleepAtomics(3000);
        })
        .margin({ top: 20 });
    }
    .height('100%')
    .width('100%');
  }
}
```