입력 : Promise 배열 필요(필요하지 않음)
출력: 모든 성공 약속의 결과 배열이 포함된 Promise를 반환합니다.
참고: 약속이 실패하면 즉시 거부됩니다.
`
Promise.myAll = 함수(약속) {
return new Promise(함수 (해결, 거부) {
// 입력이 배열인지 확인
if (!Array.isArray(약속)) {
return accept(new TypeError("인자는 배열이어야 합니다."));
}
let results = []; let completedPromises = 0; promises.forEach(function (promise, index) { // Use Promise.resolve to handle non-promise values Promise.resolve(promise) .then(function (value) { results[index] = value; completedPromises += 1; // If all promises are resolved if (completedPromises === promises.length) { resolve(results); } }) .catch(function (error) { reject(error); // Reject if any promise fails }); }); // Handle case with empty array of promises if (promises.length === 0) { resolve([]); }
});
};
`
. 모든 Promise가 해결되고 그 결과는 결과 배열에 저장됩니다.
. 해결된 Promise의 수가 입력 배열의 길이와 같을 때 외부 Promise는 결과 배열로 해결됩니다.
. Promise 배열에서 모든 값이 Promise여야 할 필요는 없으며 숫자, 문자열 또는 동기 함수 등 어떤 값으로도 가능합니다.
전달된 값이 이미 Promise인 경우 - 추가 래핑이나 변경이 발생하지 않도록 동일한 Promise를 반환합니다.
전달된 값이 Promise가 아닌 경우 - 해결된 Promise로 값을 래핑하여 Promise처럼 처리하고 .then()으로 처리할 수 있습니다.
값으로 해결되도록 거부를 사용하면 오류로 간주되는 값과 함께 catch 블록에 포착됩니다.
궁금한 점은 댓글로 남겨주세요!
위 내용은 Promise.all()의 폴리필의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!