我有一些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,识别具有回调的函数,以正确的形式重新编写它们,然后进行eval,但这似乎非常复杂,并且会使调试变得非常困难。
有没有更好的机制来做到这一点?