ネットワーク経由で非同期リクエストを実行し、データを「返す」ためのコールバックを取る JavaScript 関数がいくつかあります。これを使用すると、これがどのように見えるかの例を次に示します。
RemoteQuery(server,query,function(ret) {
// do something with ret
})
問題は、連続して複数のクエリがある場合、コードが非常にネストされて管理が難しくなることです。私はスコープ変数に依存しているので、これらの関数のそれぞれを個別のトップレベル関数に切り出すこともできません。おもちゃの例を次に示します。
RemoteQuery(server,query1,function(ret) {
var x = ret[5]
RemoteQuery(server,query2,function(ret) {
var y = ret[3]
if (x + y > 10) {
RemoteQuery(server,query2,function(ret) {
// do more stuff
})
}
})
})
明らかに、クエリが 2 つまたは 3 つ以上あると、見苦しくなり始めます。それ以上のクエリがある可能性もあります。
理想的には、ネストなしで上記を表現したいと思います。
ret = RemoteQuery(server,query1)
var x = ret[5]
ret = RemoteQuery(server,query2)
var y = ret[3]
if (x + y > 10) {
ret =RemoteQuery(server,query2)
// do more stuff
}
しかし、私が考えた唯一のことは、javascriptを解析し、コールバックを持つ関数を認識し、正しい形式で書き直して評価することですが、これは非常に複雑に思え、デバッグが非常に難しくなります.
これを行うためのより良いメカニズムはありますか?