我是异步编程的新手,我已经看到很多例子,你可以使用promises或异步库并行发送许多请求,但不是多轮请求,其中请求将取决于先前的请求。
问题: 我正在查询类似图形的数据库,请考虑:
| node | connected |
| 1 | 2 |
| 2 | 3 |
| 4 | 5 |
或以图形形式:
(1)-(2)-(3) (4)-(5)
基于输入节点ID(例如1
),我需要提取可以跟踪到节点1
的所有记录(在此示例中为[1,2,3]
)
我不确定如何使用异步编程实现它。
如果函数queryDB
将id作为输入并返回连接的id,那么我可以这样做:
inputID = 1;
nodes = [1];
queryDB(inputID,function(a){
nodes.push(a);
queryDB(a,function(b){
nodes.push(b)
});
});
这会产生nodes = [1,2,3]
这显然不会很好地扩展。我正在寻找一种更好的方法来实现这一点,所以任何建议都会有所帮助。