前提・実現したいこと
質問です。
asyncを関数につけると、その関数は非同期関数として扱われると思うのですが、なぜ、実行結果が、
こんにちは! => 非同期じゃないの? => 違うんだねの順番にならないのですか?
_emitFizzBuzzは、非同期関数ですよね?
該当のソースコード
const events = require("events"); function createFizzBazzEventEmitter(untill) { const eventEmitter = new events.EventEmitter(); _emitFizzBuzz(eventEmitter, untill); console.log("こんにちは!"); return eventEmitter; } async function _emitFizzBuzz(eventEmitter, untill) { console.log("非同期じゃないの?"); console.log("違うんだね"); eventEmitter.emit("start"); let count = 1; while (count <= untill) { await new Promise((resolve) => setTimeout(resolve, 100)); if (count % 15 === 0) { eventEmitter.emit("FizzBuzz", count); } else if (count % 3 === 0) { eventEmitter.emit("Fizz", count); } else if (count % 5 === 0) { eventEmitter.emit("Buzz", count); } count++; } eventEmitter.emit("end"); } function startListener() { console.log("start"); } function fizzListener(count) { console.log("Fizz", count); } function buzzListener(count) { console.log("Buzz", count); } function fizzBuzzListener(count) { console.log("FizzBuzz", count); } function endListener() { console.log("end"); this.off("start", startListener) .off("Fizz", fizzListener) .off("Buzz", buzzListener) .off("FizzBuzz", fizzBuzzListener) .off("end", endListener); } createFizzBazzEventEmitter(40) .on("start", startListener) .on("Fizz", fizzListener) .once("Buzz", buzzListener) .on("FizzBuzz", fizzBuzzListener) .on("end", endListener);
###実行結果
非同期じゃないの?
違うんだね
こんにちは!
Fizz 3
Buzz 5
Fizz 6
Fizz 9
Fizz 12
FizzBuzz 15
Fizz 18
Fizz 21
Fizz 24
Fizz 27
FizzBuzz 30
Fizz 33
Fizz 36
Fizz 39
end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/14 14:53
2021/04/16 08:40
2021/04/16 08:57
2021/04/17 03:48