2017-04-07 1 views
0

Array<Promise<Object>>을 가지고 Promise<Array<Object>>을 반환 할 수있는 함수가 필요합니다.자바 스크립트 약속 - 거부되지 않은 배열 얻기

Promise.all()과 비슷하지만 reject에 실패하지 않고 그냥 무시하고 계속 이동합니다.

+0

귀하의 코드는 무엇입니까? – funcoding

+1

'Promise >'에'Array >'을 쓰지 않는다고 확신 하시겠습니까? – Thomas

+0

'Promises <…>'이란 무엇입니까? – Bergi

답변

2

당신은 Promise<Array<X>>Array<Promise<X>>를 변환하는 Promise.all를 사용할 수 있습니다.

것은 거부를 무시 단지 그들을 처리하고 대신 일부 null 값을 반환하려면 다음

Promise.all(promises.map(p => p.catch(err => undefined))) 

을 당신이 그들을 필터링 완전히에 관심이 있다면, this approach 그 후 프로세스 배열을 사용합니다.

0

우리는 @Bergi가 설명하는 해결책으로 갔다. here을 볼 수있다.

약간 단순화 된 예는 다음과 같습니다

function preloadImages(imagePromises) { 
    const IMAGE_LOAD_FAIL = null; 

    const promises = imagePromises 
    .map(image => image.catch(err => IMAGE_LOAD_FAIL)); 

    return Promise.all(promises) 
    .then(images => images.filter(image => image !== IMAGE_LOAD_FAIL)); 
} 
관련 문제