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

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

Firebase 原子增量如何在競爭條件下工作?

Firebase 原子增量如何在競爭條件下工作?

森林海 2023-06-09 17:30:13
Firebase 原子增量可用于更新或設(shè)置。但是他們不會在完成時(shí)返回更新的值。所以,我必須在更新或設(shè)置后立即使用 once('value') :    var submitref = firebase.database().ref('/sequence/mykey')    return submitref.set(firebase.database.ServerValue.increment(1)).then(_=>{        return submitref.once('value').then(snap=>snap.val());    });讓我們假設(shè) 2 個(gè)線程正在同時(shí)執(zhí)行此代碼。submitref.set() 可以正常工作,因?yàn)樵釉隽?。但是,如果它們同時(shí)完成 submitref.set() 并同時(shí)執(zhí)行 submitref.once('value'),則兩個(gè)線程將收到相同的遞增值 +2。這是一種可能性還是我沒有正確理解它?
查看完整描述

2 回答

?
隔江千里

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

increment操作在服務(wù)器上以原子方式執(zhí)行。在他們的操作中不能保證所有客戶端(甚至任何客戶端)都會看到所有中間狀態(tài)。

保持順序、單調(diào)遞增計(jì)數(shù)器的用例更適合事務(wù),因?yàn)樵谑聞?wù)中,客戶端根據(jù)當(dāng)前值控制新值。


查看完整回答
反對 回復(fù) 2023-06-09
?
慕娘9325324

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

JavaScript 是一種單線程語言。相對于任何其他代碼,每一位代碼都以某種順序執(zhí)行。除了通過任何本機(jī)庫外,沒有線程爭用,這里不是這種情況。此外,實(shí)時(shí)數(shù)據(jù)庫將所有操作按照接收順序通過單個(gè)連接進(jìn)行流水線處理,因此其操作也具有一致的順序。

綜上所述,我想您可能會遇到這樣一種情況,即兩次調(diào)用發(fā)生set()在兩次調(diào)用之前once(),這意味著它們都將顯示兩倍的增量值。

在這種情況下,您最好使用 listener withon()以便隨時(shí)了解最新的值,并在看到它發(fā)生變化時(shí)對其采取行動,而不管建立它之后會發(fā)生什么。


查看完整回答
反對 回復(fù) 2023-06-09
  • 2 回答
  • 0 關(guān)注
  • 156 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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