コールバック
callback
2. こちらから電話をかけ直すこと
このページでは1を解説する
使い方
code:chottomasi.js
asyncfileread('a.txt', function(fda) {
asyncfileread('b.txt', function(fdb) {
asyncfileread('c.txt', function(fdc) {
asyncfileread('d.txt', function(fdd) {
asyncfileread('e.txt', function(fde) {
asyncfileread('f.txt', function(fdf) {
// something process
})
})
})
})
})
})
ループしたい場合は終了条件を自力で管理して再帰する
でもたしかに、引数の()の中に関数の{}を入れることによってインデントが深くなることはよくある メソッドチェーン版who.icon
code:method_chain.js
asyncfileread("a.txt")
.then((fda) => {
return asyncfileread("b.txt").then((b) => fda, b); })
return asyncfileread("c.txt").then((b) => fda, fdb, b); })
})
})
})
console.log(fda,fdb,fdc,fdd,fde,fdf)
});
メソッドチェーンはデータハンドリングがむずい
一番マシなやつ
code:all.js
Promise.all([
asyncfileread("a.txt"),
asyncfileread("b.txt"),
asyncfileread("c.txt"),
asyncfileread("d.txt"),
asyncfileread("e.txt"),
asyncfileread("f.txt")
console.log(fda,fdb,fdc,fdd,fde,fdf)
});
コールバック関数の存在によって、既存のクラスやメソッドの挙動を簡単にカスタマイズできてとても良いMijinko_SD.icon もっとマシな書き方とかは考えればあるのかもしれないけれど
逆にコールバックが存在しない言語で同じことをしようとすると結構だるい 既存の処理の内部にちょっと動作を追加しようとしただけで新しいクラスに継承しなきゃいけないのはマジであほくさい 言語の思想によるのではbsahd.icon
コールバックはイベントの受取に便利bsahd.icon
え?処理完了を検知する方法がないから、処理開始から10ms待機して終了時の処理を実行してるんですか…?
onCloseとか無いんですねかわいそうに
sleepで10msごとに処理状態を確認するとかbsahd.icon
引数に渡す関数というのが学びたての時になんか難しく感じた記憶imo.icon