第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么命令 transaction.update 在 carrelloAttuale.

為什么命令 transaction.update 在 carrelloAttuale.

呼啦一陣風(fēng) 2023-04-26 14:16:00
我正在嘗試從云 Firestore 的文檔中獲取產(chǎn)品,然后將該產(chǎn)品放入購(gòu)物車。當(dāng)我(成功)閱讀該產(chǎn)品時(shí),我嘗試將其放入在外部聲明的數(shù)組列表中,但除非我將 final 放入變量,否則它不起作用。這樣做,當(dāng)我運(yùn)行下面的代碼時(shí),我成功地檢索了數(shù)據(jù),但是操作 carrelloAttuale.prodotti.add(prod) 是在命令 transaction.update() 之后執(zhí)行的,因此更新不會(huì)上傳與開始時(shí)沒有什么不同.//prendo l'utente                FirebaseAuth auth= FirebaseAuth.getInstance();                //mi salvo il codice del prodotto scannerizzato                final String codiceProdottoScannerizzato=String.valueOf(intentData);                final FirebaseFirestore db = FirebaseFirestore.getInstance();                final DocumentReference docRef = db.collection("carrelli").document(auth.getUid());                final DocumentReference docrefprodotti = db.collection("prodotti").document(codiceProdottoScannerizzato);                db.runTransaction(new Transaction.Function<Void>() {                    @Override                    public Void apply(Transaction transaction) throws FirebaseFirestoreException {                        DocumentSnapshot snapshot = transaction.get(docRef);                        final Carrello carrelloAttuale = snapshot.toObject(Carrello.class);我希望在調(diào)試日志中的 carrelloAttuale.prodotti.add(prod) 之后執(zhí)行命令更新標(biāo)簽的順序是:CARRELLO FB:0 PRODOTTO:Nome:latte
查看完整描述

2 回答

?
白板的微信

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊

數(shù)據(jù)從 Firestore 異步加載,因?yàn)樗赡鼙仨殢姆?wù)器檢索。為防止阻止應(yīng)用程序,主要代碼在檢索數(shù)據(jù)時(shí)繼續(xù)執(zhí)行。然后,當(dāng)數(shù)據(jù)可用時(shí),您onComplete會(huì)被調(diào)用。


這意味著任何需要數(shù)據(jù)中的數(shù)據(jù)的代碼都必須在方法內(nèi)部onComplete,或者從那里調(diào)用。所以像:


docrefprodotti.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {

    @Override

    public void onComplete(@NonNull Task<DocumentSnapshot> task) {

        if (task.isSuccessful()) {

            DocumentSnapshot document = task.getResult();

            if (document.exists()) {

                Prodotti prod=document.toObject(Prodotti.class);

                prod.id=codiceProdottoScannerizzato;

                prod.totalePezziCarrello=1;

                carrelloAttuale.prodotti.add(prod);

                Log.d(TAG, "PRODOTTO: " + prod.toString());

            } else {

                Log.d(TAG, "No such document");


            }

        } else {

            Log.d(TAG, "get failed with ", task.getException());

        }


        Log.d(TAG, "CARRELLO FB: " + carrelloAttuale.size());

        transaction.update(docRef, "prodotti", carrelloAttuale.getProdotti());

    }

});


查看完整回答
反對(duì) 回復(fù) 2023-04-26
?
墨色風(fēng)雨

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊

“命令更新”在調(diào)用“carrelloAttuale.prodotti.add(prod)”之前執(zhí)行,因?yàn)樵?code>onComplete()方法具有異步行為并立即返回。這意味著在數(shù)據(jù)庫(kù)更新操作完成之后的某個(gè)時(shí)間之后,偵聽器才會(huì)被調(diào)用。無(wú)法保證需要多長(zhǎng)時(shí)間。根據(jù)您的連接速度和狀態(tài),更新操作可能需要幾百毫秒到幾秒才能完成。

如果您想對(duì)該數(shù)據(jù)使用某些邏輯,則必須等到異步 Firebase 數(shù)據(jù)庫(kù)操作完成。這意味著您只能使用prod偵聽器回調(diào)本身內(nèi)部的對(duì)象。

查看完整回答
反對(duì) 回復(fù) 2023-04-26
  • 2 回答
  • 0 關(guān)注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)