非同期の書き方メモ

C#で時間のかかるA処理B処理の合間にちょっとした処理をして
その後、処理A・処理Bが完了したら次の処理を行う場合

using System;
using System.Threading.Tasks;

var stopwatch = System.Diagnostics.Stopwatch.StartNew();
stopwatch.Start();

// 時間のかかる処理
var taskA = MethodA();

Console.WriteLine("ちょっとした処理①");

// 別の時間のかかる処理
var taskB = MethodB();

Console.WriteLine("ちょっとした処理②");

// A, Bの完了を待つ
await Task.WhenAll(taskA, taskB);

Console.WriteLine("A,Bの結果を使って次の処理を実行");

stopwatch.Stop();

Console.WriteLine($"処理時間: {stopwatch.ElapsedMilliseconds / 1000} s");

static async Task MethodA()
{
    await Task.Delay(5000);
    Console.WriteLine("MethodA完了");
}

static async Task MethodB()
{
    await Task.Delay(5000);
    Console.WriteLine("MethodB完了");
}

こんな感じになり、実行結果は、以下のようになる

ちょっとした処理①
ちょっとした処理②
MethodA完了
MethodB完了
A,Bの結果を使って次の処理を実行
処理時間: 5 s

これをJavaScriptでどう書くのか知りたかった。

(async () => {
    const start = Date.now();

    // 時間のかかる処理
    const taskA = methodA();

    console.log("ちょっとした処理①");

    // 別の時間のかかる処理
    const taskB = methodB();

    console.log("ちょっとした処理②");

    // A, Bの完了を待つ
    await Promise.all([taskA, taskB]);

    console.log("A,Bの結果を使って次の処理を実行");

    const elapsed = (Date.now() - start) / 1000;
    console.log(`処理時間: ${elapsed} s`);

})();

async function methodA() {
    await new Promise(resolve => setTimeout(resolve, 5000)); // 5秒
    console.log("methodA完了");
}

async function methodB() {
    await new Promise(resolve => setTimeout(resolve, 5000)); // 5秒
    console.log("methodB完了");
}
ちょっとした処理①
ちょっとした処理②
methodA完了
methodB完了
A,Bの結果を使って次の処理を実行
処理時間: 5.007 s
投稿日時: 2025-10-27 13:37:27

Comment

最近の投稿

最近のコメント

タグ

アーカイブ

その他