タグ

ブックマーク / zenn.dev/sora_kumo (2)

  • [JavaScript] forEachでasync/awaitは使える

    JavaScript の forEach で async/await は使える JavaScrript の forEach で async/await が使えないという誤解が一部あるようですが、全く問題なく使えます。そういう誤解が何故発生してしまうかと言えば、非同期を同期させるための管理を行っていないからです。プログラムは思った通りではなく書いたとおりに動きます。同期させるようにプログラムを書かなければ、その通りの結果が返ってきます。使えないのではなく使っていないのが原因です。 forEach で非同期を同期させるプログラムを作る 配列の内容を 1 秒ごとに一つ表示させるプログラムを forEach で作ってみます。 こちらに実行環境を用意しました プログラム内容 // 疑似セマフォによるスケジューラ const semaphore = ( limit = 1, count = 0, rs

    [JavaScript] forEachでasync/awaitは使える
  • JavaScriptのforEachで非同期処理を逐次実行する方法

    JavaScript の forEach は非同期ではない 時々ネットの解説記事で forEach は非同期だという解説を見かけますがこれは間違っています。実際の処理は逐次関数をコールバックしていくだけなので、普通に同期で動いています。コールバック中に非同期処理を使って待機動作を行っていないので、バラバラに動いているように見えるだけなのです。 検証用の非同期処理を作成 ランダムに 1000ms 以内の時間を待機して文字列を出力する関数です。TypeScript になっているので、JavaScript で実行したい場合は型定義を外してください。 const f = (value: string) => { return new Promise<void>((resolve) => setTimeout(() => { console.log(value); resolve(); }, Mat

    JavaScriptのforEachで非同期処理を逐次実行する方法
    dmizuno55
    dmizuno55 2022/07/15
  • 1