Viki

Viki 写东西的地方

努力上进且优秀
x
github
email
bilibili

来て、nodeの組み込みの「delay」関数を試してみてください。

序文#

実際の開発では、非同期操作で「遅延」操作が必要な場面によく遭遇します。通常、以下のような util 関数を作成して処理を行います。

const delay = (ms: number) => new Promise((r) => setTimeout(r, ms));

これは非常に良く、簡潔であり、私たちのニーズに完璧に合っています。ただし、コードが純粋な node 環境で実行される場合、考慮すべき新しい代替案があります。

node の Timers Promises API を使用する#

v15.0.0 以降、node には組み込みの Timers Promises API があり、setTimeout関数を提供しています。これは、先ほど説明した遅延関数とほぼ同じ動作をするPromiseを返します。さらに、さまざまな使い方に対応しています。

import { setTimeout } from 'node:timers/promises'

const sayHi = async () => {
  console.log('Hi!')
}

const doSomethingAsync = async () => {
  console.log('yolo!')
  
  await setTimeout(1000)

  await sayHi()

  const res = await setTimeout(1000, 'result');

  console.log("res is: ", res)
}

doSomethingAsync()

上記のコードの出力結果は次のとおりです。

yolo! # 即座に出力
Hi! # 1秒後に出力
res is:  result # さらに1秒後に出力

詳細については、Node.js 公式ドキュメントを参照してください。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。