작업 순서 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