Future readData() {
var completer = new Completer();
print("querying");
pool.query('select p.id, p.name, p.age, t.name, t.species '
'from people p '
'left join pets t on t.owner_id = p.id').then((result) {
print("got results");
for (var row in result) {
if (row[3] == null) {
print("ID: ${row[0]}, Name: ${row[1]}, Age: ${row[2]}, No Pets");
} else {
print("ID: ${row[0]}, Name: ${row[1]}, Age: ${row[2]}, Pet Name: ${row[3]}, Pet Species ${row[4]}");
}
}
completer.complete(null);
});
return completer.future;
}
The above is an example code taken from github SQLJocky Connector
I would like someone to explain me if possible why is the function which has a completer object created outside the pool.query is then calling a function completer.complete(null).
In short I am not able to understand the part after print executes.
Note:Kindly if possible I would also like to know how is future and Completer used for practical purpose both for DB and non DB operations.
I have explored the following links: Google groups discussion on Future and Completer
and the api reference documentation which is as given below Completer api reference and Future api Reference