今のイベントループでのスタート地点。呼ばれないので、ここには到達しない。呼んで、「次のジョブ」を登録した(今更)。今のイベントループの終わり。呼ぶ処理を「次のジョブを登録する処理」よりも後(=次のイベントループ)に実行する必要がある。次のイベントループで、予約されたこの処理が始まる。登録済みの「次のジョブ」を連鎖的に呼ぶ。次のイベントループで実行するように予約。今のイベントループでのスタート地点。「次のジョブ」として、この処理が始まる。呼んで、次のジョブを登録した。今のイベントループの終わり。......という順番で処理が進むから、期待通りに動くようになる。どの処理が一体何をしているのか、どの関数が何を返しているのか、自分が呼んでいるメソッドは誰のメソッドなのか、といった事をちゃんと理解しておくと、この話がすっと頭に入ってくると思うんだけど、ただの構文として覚えてしまっていると、メールの送り主の人みたいに「何で動かないの......」って詰まってしまうんだと思う。呼ぶ」という所までを「構文」として暗記していたから、結果的にはちゃんと動いてくれてたという状態だったんだと思う。その後若手IT勉強会の中でコードリーディングをやってだんだん仕組みが分かってきて、「ああなるほど、こういうことだったんだ」と理解できるようになった。コールバック関数という形で後から登録できるようにする」ものだ、と僕は認識してる。「後から登録する」という都合上、この性質は非同期処理(関数を抜けた時点でまだ処理が始まっていないという種類の処理)と非常に相性がいい。非同期処理じゃないと使えないわけではない。使わざるを得なくて、それで初見の人に分かりにくくなってしまう。そこがもどかしい所だ。atの末尾に2018年6月21日時点の日本の首相のファミリーネーム(ローマ字で回答)を繋げて下さい。「noda」なら、「2012-06-12_return-after-call.trackbacknoda」です。これは機械的なトラックバックスパムを防止するための措置です。