我对Firestore的某些功能有疑问。我试图占用从Firestore数据库通过多个读取操作获得的数据数组。当所有数据成功读取并存储在我的阵列中时,有没有办法通知我?这尤其是一个问题,因为读取操作没有按照它们被调用的顺序完成。以下是一些说明我问题的代码:
/* My array to insert the data read from the Firestore database */
String[] my_array = new String[3];
/* A method that will be called to initialize our array */
private void initArray(String doc_one, String doc_two, String doc_three) {
initSingleIndex(0, doc_one);
initSingleIndex(1, doc_two);
initSingleIndex(2, doc_three);
}
private void initSingleIndex(final int index, String doc_id) {
/* We perform our read operation here */
question_ref.document(doc_id).get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
my_array[index] = documentSnapshot.getString("some_field");
}
});
}
我目前的实现是保留一个全局计数器,用于跟踪成功执行的读取操作的数量。我也想知道是否可以同时触发onSuccess()回调,因为这会导致数据损坏(即同时递增值的经典问题)。
任何帮助或建议都将不胜感激。