작업 순서 JS Firebase [중복]
Aug 28 2020
아래 코드가 "F"경고를 먼저 실행 한 다음 "S '및"V'경고를 실행하는 이유를 설명해 주시겠습니까?
var status = ' ';
database.ref('housekeeping/ongoing').once('value', function(snapshot){
alert(status + "S");
status = snapshot.val();
alert(status + "V");
});
alert(status + "F");
답변
1 DougStevenson Aug 28 2020 at 00:23
once()비동기식이며 쿼리가 완료되기 전에 즉시 반환됩니다. 제공 한 콜백은 나중에 실행됩니다.
모든 Firebase API는 비동기식이며 이는 자바 스크립트에서 매우 일반적입니다. once()또한 프라 미스도 반환하고 그 프라 미스는 비동기 호출의 결과를 처리하는 더 좋은 방법이라는 것을 알아야 합니다. 현대 자바 스크립트 프로그래밍에서 프라 미스의 작동 방식을 이해하는 것은 매우 중요합니다.
Firebase API가 비동기 인 이유에 대해이 블로그를 읽어 보시기 바랍니다 .
1 Titulum Aug 28 2020 at 00:26
당신은에서 볼 수 있듯이 문서 , once비동기 호출입니다. 즉, 데이터가 검색 될 때까지 코드가 동기 작업을 계속합니다. 그러면 콜백 내의 코드가 실행됩니다.
'S'및 'V'경고를 먼저 표시하려면 다음을 사용해야합니다 async/await.
async function getDatabaseData() {
const snapshot = await database.ref('housekeeping/ongoing').once('value');
alert(status + "S");
status = snapshot.val();
alert(status + "V");
alert(status + "F");
}
추가 정보 async/await