0
你好我有三个带有链接记录的表(下一个表中的记录在前面表中的记录上有链接)。 现在我想在下表中删除表格中的他的孩子的记录。 我想使用递归,但我有承诺的问题。这里是我的代码:有角度的http承诺和递归
$scope.removeItem = function (table, itemId) {
var nextTableIndex = table.index + 1;
dbService.remove(table, [{
by: table.parentColumn == undefined ? "ID" : table.parentColumn, values: itemId
}]);
while (nextTableIndex < config.tables.length) {
var nextTable = config.tables[nextTableIndex];
dbService.getTableItems(nextTable.id, ["ID"], [{ by: nextTable.parentColumn, values: itemId }])
.then(function (data) {
var ids = select(data, "ID"); //return array with all ids ([1,2,3])
$scope.removeItem(config.tables[table.index + 1], ids);
});
nextTableIndex++;
}
}
dbService.getTableItems = function(tableId, columns, where){ //return promise
return $http.get(createUrl(tableId, columns, where));
}
只从第一个表格和最后一个表格中删除。在递归中使用last last下一个表,因为它首先执行整个过程,而不是执行“then”函数。我需要首先从数据库加载数据,然后再调用下一个代码。
如何立即加载数据是一种可能性?喜欢的东西:dbService.getTableItems(...).toArray()
谢谢