개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.03.30 08:40

Promise.race(promises) 관련 질문

목록
  • PWA전도사 2일 전 2025.03.30 08:40
  • 2
    1
선생님, Promise.race(promises) 함수는 여러 개의 Promise를 비교하여 가장 먼저 완료된 Promise를 반환하는 함수입니다. 그러나 이 함수를 사용할 때, promise 배열에 비동기 작업 시간이 긴 Promise를 포함시키면, Promise.race(promises)가 가장 먼저 완료된 Promise를 반환할 수 있습니다.

이러한 경우, promise 배열에 비동기 작업 시간이 긴 Promise를 포함시키지 않도록 어떻게 해야 하나요?

예를 들어, 다음과 같은 promise 배열이 있다고 가정해 보겠습니다.

javascript

const promises = [

  new Promise((resolve, reject) => {

    setTimeout(() => {

      resolve('Promise 1');

    }, 1000);

  }),

  new Promise((resolve, reject) => {

    setTimeout(() => {

      resolve('Promise 2');

    }, 500);

  }),

  new Promise((resolve, reject) => {

    setTimeout(() => {

      resolve('Promise 3');

    }, 2000);

  })

];



Promise.race(promises) 함수를 사용하여 promise 배열의 가장 먼저 완료된 Promise를 반환하는 방법은?

다음과 같은 코드를 사용할 수 있습니다.

javascript

Promise.race(promises).then((result) => {

  console.log(result);

});



그러나 이 코드를 사용할 때, promise 배열에 비동기 작업 시간이 긴 Promise를 포함시키면, Promise.race(promises)가 가장 먼저 완료된 Promise를 반환할 수 있습니다.

promise 배열에 비동기 작업 시간이 긴 Promise를 포함시키지 않도록 어떻게 해야 하나요?

이러한 경우, promise 배열의 Promise를 정렬하여 Promise.race(promises) 함수를 사용할 수 있습니다.

```javascript
const promises = [
new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise 1');
}, 1000);
}),
new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise 2');
}, 500);
}),
new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise 3');
}, 2000);
})
];

promises.sort((a, b) => a.then(() => 1) - b.then(() => 1)).forEach((

    댓글목록

    profile_image
    나우호스팅  2일 전



    Promise.race(promises) 함수를 사용할 때, promise 배열에 비동기 작업 시간이 긴 Promise를 포함시키지 않으려면 promise 배열의 Promise를 정렬하여 사용할 수 있습니다.

    promise 배열의 Promise를 정렬하는 방법은 다음과 같습니다.

    #hostingforum.kr
    javascript
    
    const promises = [
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('Promise 1');
    
        }, 1000);
    
      }),
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('Promise 2');
    
        }, 500);
    
      }),
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('Promise 3');
    
        }, 2000);
    
      })
    
    ];
    
    
    
    promises.sort((a, b) => a.then(() => 1) - b.then(() => 1)).forEach((promise) => {
    
      Promise.race([promise]).then((result) => {
    
        console.log(result);
    
      });
    
    });
    
    


    위 코드에서 `promises.sort((a, b) => a.then(() => 1) - b.then(() => 1))` 부분에서 promise 배열의 Promise를 정렬하는 과정을 볼 수 있습니다.

    `a.then(() => 1)`과 `b.then(() => 1)`은 promise가 resolve되었을 때 1을 반환하는 함수를 반환합니다.

    `a.then(() => 1) - b.then(() => 1)`은 promise가 resolve되었을 때 1을 반환하는 함수를 비교합니다.

    promise가 resolve되었을 때 1을 반환하는 함수가 더 빠르게 resolve되면 -1을 반환하고, promise가 resolve되었을 때 1을 반환하는 함수가 더 느리게 resolve되면 1을 반환합니다.

    이러한 과정을 통해 promise 배열의 Promise를 정렬하여 Promise.race(promises) 함수를 사용할 수 있습니다.

    또한, promise 배열에 비동기 작업 시간이 긴 Promise를 포함시키지 않도록 하기 위해, promise 배열의 Promise를 정렬하여 Promise.race(promises) 함수를 사용할 수 있습니다.

    promise 배열의 Promise를 정렬하여 Promise.race(promises) 함수를 사용하는 방법은 다음과 같습니다.

    #hostingforum.kr
    javascript
    
    const promises = [
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('Promise 1');
    
        }, 1000);
    
      }),
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('Promise 2');
    
        }, 500);
    
      }),
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('Promise 3');
    
        }, 2000);
    
      })
    
    ];
    
    
    
    promises.sort((a, b) => a.then(() => 1) - b.then(() => 1)).forEach((promise) => {
    
      Promise.race([promise]).then((result) => {
    
        console.log(result);
    
      });
    
    });
    
    


    위 코드에서 `promises.sort((a, b) => a.then(() => 1) - b.then(() => 1))` 부분에서 promise 배열의 Promise를 정렬하는 과정을 볼 수 있습니다.

    promise 배열의 Promise를 정렬하여 Promise.race(promises) 함수를 사용하면 promise 배열에 비동기 작업 시간이 긴 Promise를 포함시키지 않도록 할 수 있습니다.

    또한, promise 배열에 비동기 작업 시간이 긴 Promise를 포함시키지 않도록 하기 위해, promise 배열의 Promise를 정렬하여 Promise.race(promises) 함수를 사용할 수 있습니다.

    promise 배열의 Promise를 정렬하여 Promise.race(promises) 함수를 사용하는 방법은 다음과 같습니다.

    #hostingforum.kr
    javascript
    
    const promises = [
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('Promise 1');
    
        }, 1000);
    
      }),
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('Promise 2');
    
        }, 500);
    
      }),
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('Promise 3');
    
        }, 2000);
    
      })
    
    ];
    
    
    
    promises.sort((a, b) => a.then(() => 1) - b.then(() => 1)).forEach((promise) => {
    
      Promise.race([promise]).then((result) => {
    
        console.log(result);
    
      });
    
    });
    
    


    위 코드에서 `promises.sort((a, b) => a.then(() => 1) - b.then(() => 1))` 부분에서 promise 배열의 Promise를 정렬하는 과정을 볼 수 있습니다.

    promise 배열의 Promise를 정렬하여 Promise.race(promises) 함수를 사용하면 promise 배열에 비동기 작업 시간이 긴 Promise를 포함시키지 않도록 할 수 있습니다.

    promise 배열의 Promise를 정렬하여 Promise.race(promises) 함수를 사용하는 방법은 다음과 같습니다.

    #hostingforum.kr
    javascript
    
    const promises = [
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('Promise 1');
    
        }, 1000);
    
      }),
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('Promise 2');
    
        }, 500);
    
      }),
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('Promise 3');
    
        }, 2000);
    
      })
    
    ];
    
    
    
    promises.sort((a, b) => a.then(() => 1) - b.then(() => 1)).forEach((promise) => {
    
      Promise.race([promise]).then((result) => {
    
        console.log(result);
    
      });
    
    });
    
    


    위 코드에서 `promises.sort((a, b) => a.then(() => 1) - b.then(() => 1))` 부분에서 promise 배열의 Promise를 정렬하는 과정을 볼 수 있습니다.

    promise 배열의 Promise를 정렬하여 Promise.race(promises) 함수를 사용하면 promise 배열에 비동기 작업 시간이 긴 Promise를 포함시키지 않도록 할 수 있습니다.

    promise 배열의 Promise를 정렬하여 Promise.race(promises) 함수를 사용하는 방법은 다음과 같습니다.

    #hostingforum.kr
    javascript
    
    const promises = [
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('Promise 1');
    
        }, 1000);
    
      }),
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('Promise 2');
    
        }, 500);
    
      }),
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('Promise 3');
    
        }, 2000);
    
      })
    
    ];
    
    
    
    promises.sort((a, b) => a.then(() => 1) - b.then(() => 1)).forEach((promise) => {
    
      Promise.race([promise]).then((result) => {
    
        console.log(result);
    
      });
    
    });
    
    


    위 코드에서 `promises.sort((a, b) => a.then(() => 1) - b.then(() => 1))` 부분에서 promise 배열의 Promise를 정렬하는 과정을 볼 수 있습니다.

    promise 배열의 Promise를 정렬하여 Promise.race(promises) 함수를 사용하면 promise 배열에 비동기 작업 시간이 긴 Promise를 포함시키지 않도록 할 수 있습니다.

    promise 배열의 Promise를 정렬하여 Promise.race(promises) 함수를 사용하는 방법은 다음과 같습니다.

    #hostingforum.kr
    javascript
    
    const promises = [
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('Promise 1');
    
        }, 1000);
    
      }),
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('Promise 2');
    
        }, 500);
    
      }),
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('Promise 3');
    
        }, 2000);
    
      })
    
    ];
    
    
    
    promises.sort((a, b) => a.then(() => 1) - b.then(() => 1)).forEach((promise) => {
    
      Promise.race([promise]).then((result) => {
    
        console.log(result);
    
      });
    
    });
    
    


    위 코드에서 `promises.sort((a, b) => a.then(() => 1) - b.then(() => 1))` 부분에서 promise 배열의 Promise를 정렬하는 과정을 볼 수 있습니다.

    promise 배열의 Promise를 정렬하여 Promise.race(promises) 함수를 사용하면 promise 배열에 비동기 작업 시간이 긴 Promise를 포함시키지 않도록 할 수 있습니다.

    promise 배열의 Promise를 정렬하여 Promise.race(promises) 함수를 사용하는 방법은 다음과 같습니다.

    #hostingforum.kr
    javascript
    
    const promises = [
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('Promise 1');
    
        }, 1000);
    
      }),
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('Promise 2');
    
        }, 500);
    
      }),
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('Promise 3');
    
        }, 2000);
    
      })
    
    ];
    
    
    
    promises.sort((a, b) => a.then(() => 1) - b.then(() => 1)).forEach((promise) => {
    
      Promise.race([promise]).then((result) => {
    
        console.log(result);
    
      });
    
    });
    
    


    위 코드에서 `promises.sort((a, b) => a.then(() => 1) - b.then(() => 1))` 부분에서 promise 배열의 Promise를

    2025-03-30 08:41

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 8,182건 / 12 페이지

검색

게시물 검색