함께 해결해야하는 약속 그룹 작업 방법을 이해하는 데 어려움이 있습니다.약속 그룹과 함께 작업
필자의 상황에서는 ID 배열을 기반으로 일련의 약속 호출을 만들고 출력 배열에 선택적으로 추가하려고합니다.
$output = []
foreach($input as $id) {
$result1 = functioncall1($id);
$result2 = functioncall2($result1);
if ($result2 == 'some filter') {
$output[] = $result1;
}
}
이 루프가 반환하는 결과를 기다리지 않는 비동기 호출을 수행 할 수 없습니다 :이 PHP라면 내가 좋아하는 일을 할 것입니다. 그래서 나는이 같은 블루 버드 약속을 사용하고 있습니다 :
Promise.map(input, function(id) {
promisifedFunction1(id)
.then(function(result1) {
//process result1 some more
promisifedFunction2(result1)
.then(function(result2) {
//process result2 some more
if (result2 == 'some filter') {
return result1;
});
});
})
.then(function(output) {});
}
을 내 출력은 오직 정의의 배열을 포함하고 있기 때문에 내가 분명히 여기에 뭔가를 놓친 거지. 그러나 그것은 분명히 매핑 및 마지막에 도달하면 내가 기대하고 정의되지 않은 배열은 때만 그것을 필터링 oks 때 생산됩니다. 필터가 리터럴 문자열을 반환하는 경우에도 undefined가 생성됩니다.
나는 뭔가를 놓치고 있지만 나는 틈을 메꾸기 위해 고심하고있다.
'Promise.all' ... https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all –