코드 실행 순서에서 예상치 못한 동작이 발생했습니다. 코드 조각은 다음과 같습니다.
으아악실행 순서는 1,3,2가 될 것으로 예상합니다. 그러나 코드를 실행하면 실제 순서는 1,2,3입니다. 왜 이런 일이 일어나는지 설명해 줄 수 있나요?
또한 getScenario() 앞에 return 문을 포함하도록 reloadScenarios 함수를 수정했을 때 실행 순서가 원하는 순서인 1, 3, 2로 변경되는 것을 확인했습니다. return 문이 정말로 필요합니까, 아니면 원하는 순서를 달성하기 위한 다른 설명이 있습니까?
귀하의 문제는 비동기적이지 않고 약속을 반환하지 않는 함수를 호출하기 위해 대기를 사용하고 있다는 것입니다. 함수가 Promise를 반환하지 않으므로 실행이 계속됩니다.
표시된 시퀀스를 "1,3 2"로 지정하려면 함수에
를 표시해야 합니다. 으아아아async
이렇게
await reloadScenarios
표시를 하면 Promise가 해결(또는 거부)되기를 기다리고 있습니다.자세한 내용은 문서를 참조하세요. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await
편집 죄송합니다. 한 가지 문제가 더 있습니다. 함수에서 약속도 반환해야 합니다