[過去ログ] Go language part 5 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
919
(2): デフォルトの名無しさん [sage] 2025/05/18(日) 23:54:17.15 ID:eaOArS/2(12/12) AAS
>>918のasync関数fooは以下のように機械的に通常関数fooへと自動変換できる
ステートマシンを使う必要はない

function foo() {
 return new Promise((resolve, reject) => {
  console.log("hello");
  delay(1).then((_x1) => {
   let a = _x1;
   delay(2).then((_x2) => {
    let b = _x2;
    let c = a + b;
    console.log(`${a} + ${b} = ${c}`);
    resolve(c);
   });
  });
 });
}
921: デフォルトの名無しさん [sage] 2025/05/19(月) 00:18:33.88 ID:m1yBrNr9(1/2) AAS
>>920
C#やRustは、await時に一時的にスケジューラに戻すために、ステートマシンのコルーチンに変換しますね。
しかし、JavaScriptはそのコルーチン化が不要なため、ステートマシンへの変換が不要ではないでしょうか?
実際にステートマシンを使わずに変換している>>919を使ってみたら、元のasync関数と全く同様に動作しました。
924
(1): デフォルトの名無しさん [sage] 2025/05/19(月) 00:31:26.37 ID:m1yBrNr9(2/2) AAS
>>922
JavaScriptの場合はそうですよ
Promiseでくくれば本物の非同期で簡単に並行処理できます
C#のTask.Runも不要です
async関数の登場以前からasyncと同じ動作で動いていますよ
async関数は>>919のような感じのsyntax sugarなんです
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.717s*