我想實現一個堆棧(隊列),許多用戶可以將()推入,並且可以以FILO方式彈出()。Firebase pop()與push()相反嗎?
是否有相當於pop()
方法檢索/刪除列表的最後一項?
例如:
var popRef = firebaseRef.pop();
我想實現一個堆棧(隊列),許多用戶可以將()推入,並且可以以FILO方式彈出()。Firebase pop()與push()相反嗎?
是否有相當於pop()
方法檢索/刪除列表的最後一項?
例如:
var popRef = firebaseRef.pop();
這是非常可行的,但稍微棘手。由於您將有多個用戶嘗試刪除項目,因此您必須處理多個用戶試圖刪除相同項目的情況(這實際上是一個分佈式系統問題)。想必你只想讓一個用戶成功。解決方案是使用事務來確保只有一個用戶可以成功刪除特定項目。
我們已經在github上一個「工作隊列」的例子,非常類似於你在找什麼:https://github.com/firebase/firebase-work-queue
它和你要的之間最大的區別是,它的FIFO,而不是先進後出。要改變它是先進後出,你要修改這條線從workqueue.js:
queueRef.startAt().limit(1).on("child_added", function(snap) {
的.startAt()有告訴它抓住從開始列表的第一項(即最古老的物品)。要獲得列表中的最後一項(即最新項目),您可以將「startAt()」更改爲「endAt()」,或者完全省略「startAt()」(默認情況下我們將獲得最後一項)。
你想要一個「先來先服務」這是一個FIFO,所以你不需要pop()
但unshift()
它可在JavaScript:
// Performs a dequeue: gets the 0-index item and removes it
// from the original array
var popRef = firebaseRef.unshift();
要執行FILO你有pop()
。
火力更新:
// Get a reference to the root of the chat data.
var messagesRef = new Firebase('https://example37192028.firebaseio-demo.com/');
var tokens = [];
// When the user presses enter on the message input, write the message to firebase.
$('#messageInput').keypress(function (e) {
if (e.keyCode == 13) {
var name = $('#nameInput').val();
var text = $('#messageInput').val();
tokens.push(messagesRef.push({name:name, text:text}));
$('#messageInput').val('');
} else if (e.keyCode == 32) {
// Removing from the stack on spacebar
var token = tokens.pop();
token.remove();
$('#messageInput').val('');
}
});
// Add a callback that is triggered for each chat message.
messagesRef.on('child_added', function (snapshot) {
var message = snapshot.val();
$('<div/>').text(message.text).prepend($('<em/>').text(message.name+': ')).appendTo($('#messagesDiv'));
$('#messagesDiv')[0].scrollTop = $('#messagesDiv')[0].scrollHeight;
});
messagesRef.on('child_removed', function (snapshot) {
var message = snapshot.val();
$('<div/>').text('removed:' + message.text).prepend($('<em/>').text(message.name+': ')).appendTo($('#messagesDiv'));
$('#messagesDiv')[0].scrollTop = $('#messagesDiv')[0].scrollHeight;
});
你能否重新解釋這個問題,這樣會更清楚? – salexch
@salexch,當然,但哪一部分不清楚? – Miro
堆棧式應用程序 – salexch