Javascript 如何只运行一次?
我试图让它,如果有人点击按钮,它将更新数据库,但如果我输入50,会发生什么,然后它将继续运行,我有一个跟踪板,总结一切,使我的服务器超载,并使总数在1000的时候,它通常刚刚超过100 我已经尝试了一个文档准备功能,我有一个和一个。('click')并保持多次运行Javascript 如何只运行一次?,javascript,jquery,firebase-realtime-database,Javascript,Jquery,Firebase Realtime Database,我试图让它,如果有人点击按钮,它将更新数据库,但如果我输入50,会发生什么,然后它将继续运行,我有一个跟踪板,总结一切,使我的服务器超载,并使总数在1000的时候,它通常刚刚超过100 我已经尝试了一个文档准备功能,我有一个和一个。('click')并保持多次运行 $('#update_new_used-counter').one('click', function (event) { event.preventDefault(); let updated_new_cou
$('#update_new_used-counter').one('click', function (event) {
event.preventDefault();
let updated_new_counter = $('#new_sold-update').val().trim();
let updated_used_counter = $('#used_sold-update').val().trim();
trackingBoardRef.on("value", function(snapshot) {
let current_new_counter = snapshot.val().new;
let current_used_counter = snapshot.val().used;
if (updated_new_counter == '') {
trackingBoardRef.update({
new: current_new_counter,
});
} else {
trackingBoardRef.update({
new: updated_new_counter,
})
};
if (updated_used_counter == '') {
trackingBoardRef.update({
used: current_used_counter,
});
} else {
trackingBoardRef.update({
used: updated_used_counter,
})
};
console.log(snapshot.val().new);
console.log(snapshot.val().used);
});
});
这就是我现在所拥有的,它一直在运行多次,直到firebase说我必须处理许多请求并停止它。我只想在您呼叫时更新一次:
trackingBoardRef.on("value", function(snapshot) {
您将侦听器附加到trackingBoardRef
中的数据,该数据将立即用当前值触发,然后在trackingBoardRef
下的数据更改时触发。由于您在代码中的trackingBoardRef
下更改数据,因此创建了一个无限循环
如果您只想读取一次数据,可以使用恰当命名的one
方法:
trackingBoardRef.once("value", function(snapshot) {
...
请注意,如果要根据当前值更新trackingBoardRef下的值,则确实应该防止用户覆盖彼此的更改。调用时:
trackingBoardRef.on("value", function(snapshot) {
您将侦听器附加到trackingBoardRef
中的数据,该数据将立即用当前值触发,然后在trackingBoardRef
下的数据更改时触发。由于您在代码中的trackingBoardRef
下更改数据,因此创建了一个无限循环
如果您只想读取一次数据,可以使用恰当命名的one
方法:
trackingBoardRef.once("value", function(snapshot) {
...
请注意,如果要根据当前值更新
trackingBoardRef
下的值,则确实应该防止用户覆盖彼此的更改。什么是trackingBoardRef
?您在上传递给的“值”事件是什么?你把jQuery和React混在一起了吗?@jmargolisvt不,没有React。TrackingBoardRef是对Firebasevar TrackingBoardRef=database.ref(“跟踪板”)的引用代码>什么是trackingBoardRef
?您在
上传递给的“值”事件是什么?你把jQuery和React混在一起了吗?@jmargolisvt不,没有React。TrackingBoardRef是对Firebasevar TrackingBoardRef=database.ref(“跟踪板”)的引用代码>