코드 냄새 155 - 여러 약속

약속이 있습니다. 기다릴 필요가 있습니다. 그들 모두를 기다려

TL;DR: Don't block yourself in a sorted way.



문제


  • 불확정성
  • 성능 병목 현상

  • 솔루션


  • 한 번에 모든 약속을 기다립니다.

  • 문맥



    운영 체제를 공부하면서 세마포어에 대해 들었습니다.

    어떤 주문을 하든지 모든 조건이 충족될 때까지 기다려야 합니다.

    샘플 코드



    잘못된




    async fetchOne() { /* long task */ }
    async fetchTwo() { /* another long task */ }
    
    async fetchAll() {
      let res1 = await this.fetchOne(); 
      let res2 = await this.fetchTwo();
      // they can run in parallel !!  
    }
    
    

    오른쪽



    async fetchOne() { /* long task */ }
    async fetchTwo() { /* another long task */ }
    
    async fetchAll() {
      let [res3, res4] = await Promise.all([this.fetchOne(), this.fetchTwo()]);
      //We wait until ALL are done
    }
    

    발각



    [X] 반자동

    이것은 시맨틱 냄새입니다.

    약속 대기와 관련된 몇 가지 패턴을 찾도록 린터에 지시할 수 있습니다.

    태그


  • 성능

  • 결론



    [실제](( ) 비즈니스 규칙에 최대한 근접해야 합니다.

    규칙에 모든 작업을 기다려야 한다고 명시되어 있으면 특정 순서를 강제로 적용해서는 안 됩니다.

    학점



    아이디어 주셔서 감사합니다









    네이선 윌콕스


    @natewilcox23






    여러 약속을 기다리고 있습니까? 진행하기 전에 개별 응답을 기다리는 대신 Promise.all()을 사용하여 한 번에 모두 수행해 보십시오.


    오후 20:52 - 2022년 6월 29일









    사진 제공: Alvin Mahmudov on Unsplash

    JavaScript is the only language that I'm aware of that people feel they don't need to learn before they start using it.



    더글라스 크록포드






    이 기사는 CodeSmell 시리즈의 일부입니다.


    좋은 웹페이지 즐겨찾기