우선,이 람다는 버튼 클릭으로 작동합니다. 페이지를 새로 고칠 때 버튼을 누르면 콘솔에서 "정의되지 않음"메시지가 나타납니다. 하지만 잠시 기다렸다가 (페이지를 새로 고치지 않고) 버튼을 다시 클릭하면 콘솔에서 예상 한 값을 볼 수 있습니다. 이를 위해 수면 기능 사용을 생각했지만 사용하고 싶지 않습니다. 잠금 / 동기화와 같은 다중 스레드 프로그램에서 사용되는 메커니즘으로이 문제를 해결할 수 있습니까?
그리고 중요한 것은 그 이유가 무엇입니까?
참고 : 저는 반응 및 웹 개발이 처음입니다.
암호;
const handleAddCarPark = () => {
var dbRef = fire.database().ref("foo/bar/qux");
var newParkID;
var copy_count;
dbRef.child("count").on("value", snapshot => {
newParkID = parseInt(snapshot.val()) + 1000000;
copy_count = parseInt(snapshot.val());
});
console.log(newParkID);
}
on()
비동기식이며 즉시 반환됩니다. 콜백은 나중에 쿼리가 완료되고 데이터가 변경 될 때마다 다시 호출됩니다.
JavaScript에는 스레드가 하나만 있습니다. 잠금 또는 멀티 스레딩 기술이 필요하지 않습니다. 모든 코드와 콜백은 단일 스레드에서 호출됩니다.
코드는 전달하는 콜백 내부의 쿼리 결과 만 사용할 것으로 예상해야합니다 on()
.
시간에 따라 변경 될 수있는 결과를 수신하지 않고 한 번만 쿼리하려는 경우 once()
대신을 사용해야합니다 on()
. once()
또한 비동기식이며 쿼리 결과와 함께 promise를 반환합니다. 이러한 promise는 주로 JavaScript에서 비동기 결과를 처리하는 방법이므로 사용하는 방법을 배워야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다