찾다

 >  Q&A  >  본문

Wait 문의 실행 순서와 일치하지 않음

코드 실행 순서에서 예상치 못한 동작이 발생했습니다. 코드 조각은 다음과 같습니다.

으아악

실행 순서는 1,3,2가 될 것으로 예상합니다. 그러나 코드를 실행하면 실제 순서는 1,2,3입니다. 왜 이런 일이 일어나는지 설명해 줄 수 있나요?

또한 getScenario() 앞에 return 문을 포함하도록 reloadScenarios 함수를 수정했을 때 실행 순서가 원하는 순서인 1, 3, 2로 변경되는 것을 확인했습니다. return 문이 정말로 필요합니까, 아니면 원하는 순서를 달성하기 위한 다른 설명이 있습니까?

P粉691461301P粉691461301444일 전643

모든 응답(1)나는 대답할 것이다

  • P粉019353247

    P粉0193532472023-09-13 12:18:25

    귀하의 문제는 비동기적이지 않고 약속을 반환하지 않는 함수를 호출하기 위해 대기를 사용하고 있다는 것입니다. 함수가 Promise를 반환하지 않으므로 실행이 계속됩니다.

    표시된 시퀀스를 "1,3 2"로 지정하려면 함수에 async

    를 표시해야 합니다. 으아아아

    이렇게 await reloadScenarios 표시를 하면 Promise가 해결(또는 거부)되기를 기다리고 있습니다.

    자세한 내용은 문서를 참조하세요. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await

    편집 죄송합니다. 한 가지 문제가 더 있습니다. 함수에서 약속도 반환해야 합니다

    회신하다
    0
  • 취소회신하다