我想在firestore. 在獲取另一個(gè)集合中的其他信息之前,我需要一些關(guān)于一個(gè)集合的信息。我已經(jīng)嘗試使用Tasks.whenall()...但效率不高。我也嘗試使用callBack。這是我的第一個(gè)功能:public static void getAllFavoris(){ String uid = FirebaseAuth.getInstance().getCurrentUser().getUid(); FirebaseFirestore.getInstance().collection("product").document("favoris").collection(uid).get() .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { @Override public void onComplete(@NonNull Task<QuerySnapshot> task) { if (task.isSuccessful()) {//task is succesful Log.e("TAG","task succes for fav "); for (QueryDocumentSnapshot document : task.getResult()){//never enter in this loop Log.e("TAG","Doc "+document); Log.e("TAG", "Succes for get all favoris"); Log.e("TAG","data for favoris ::: "+document.getId()); MainActivity.favorisList.add(document.getId()); } } else { Log.d("TAG", "Error getting documents: ", task.getException()); }//call without data retrieve Log.e("TAG","favoris ::: "+showListContentS(MainActivity.favorisList)); getProductByTagFound(); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.e("TAG","error get All favoris"+e); } });}我需要在循環(huán)完成后調(diào)用它c(diǎn)reateFinalList(),還需要進(jìn)入循環(huán)以獲取數(shù)據(jù)并getProductByTag()在之后調(diào)用。
1 回答

慕后森
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
如果您想在第一個(gè)查詢(xún)完成后立即執(zhí)行新查詢(xún),則需要等到第一個(gè)查詢(xún)完成。要解決這個(gè)問(wèn)題,您需要使用嵌套查詢(xún)。換句話(huà)說(shuō),您需要將第二個(gè)查詢(xún)直接移動(dòng)到第一個(gè)回調(diào)的內(nèi)部onComplete()
方法中。這樣,只有在第一個(gè)查詢(xún)完成時(shí),才會(huì)執(zhí)行第二個(gè)查詢(xún)。
添加回答
舉報(bào)
0/150
提交
取消