As Tommi suggeted, I had to ensure that the function returns promises then I can fire an event when all iterations are finished, I did do as follow :
InsertDB = {
addBk: function(Object) {
if (Object.hasOwnProperty("Books")) {
var promises = [],p;
for (var i = 0, j = Object["Books"].length; i < j; i++) {
p = server.Books.add({
title: Object["Books"][i].id,
content: Object["Books"][i]
});
promises.push(p);
}
$.when.apply($, promises).done(function() {
// callback function when all iterations are finished
});
}
}