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;
}
上記は、githubSQLJockyConnectorから取得したサンプルコードです。
可能であれば、pool.queryの外部でコンプリーターオブジェクトが作成された関数が関数completer.complete(null)を呼び出している理由を誰かに説明してもらいたいと思います。
つまり、印刷実行後の部分がわかりません。
注:可能であれば、将来およびコンプリーターがDB操作と非DB操作の両方の実用的な目的でどのように使用されるかについても知りたいと思います。
私は次のリンクを探索しました: FutureとCompleterに関するGoogleグループのディスカッション
および以下に示すAPIリファレンスドキュメント 。CompleterAPIリファレンスおよびFutureAPIリファレンス