Javascriptで非同期処理を同期処理っぽく書けないかね?
まぁ、もともと作ろうと考えていたネタなんですが、
function foo(arg1, arg2) {
doSomeRPC(arg1, onCallback1);
function onCallback1(result1) {
doAnotherRPC(arg2, onCallback2);
function onCallback2(result2) {
bar(result1, result2);
}
}
}
Closureがない言語より色々と大分楽なわけなんですが、それでもネストしすぎうんこー。
function foo(arg1, arg2) {
var result1 = doSomeRPC(arg1);
var result2 = doAnotherRPC(arg2);
bar(result1, result2)
}
これを上のやつに翻訳すればいいような気もするけど、コードに書いてある通りの順番に実行されないから、期待しない競合状態になりそうで怖い。