이 시나리오에서는 다음을 확인해야 합니다.
이에 대한 직접 내장 솔루션은 없지만 이 동작을 달성하는 방법은 다음과 같습니다.
재귀를 사용한 수동 반복:
function sequence(arr) { const index = 0; function next() { if (index < arr.length) { arr[index]().then(next).catch(reject); index++; } } next(); }
사용 줄이기:
function sequence(arr) { return arr.reduce((p, item) => { return p.then(() => item()); // Assuming each element is a promise-returning function }, Promise.resolve()); }
Promise.mapSeries 사용:
Bluebird Promise 라이브러리를 사용하는 경우 Promise.mapSeries 메서드를 활용할 수 있습니다.
function sequence(arr) { return Promise.mapSeries(arr, item => item()); }
ES7 사용 비동기/대기:
지원되는 경우 async/await를 사용하여 이를 달성할 수 있습니다.
async function sequence(arr) { const results = []; for (let item of arr) { results.push(await item()); } return results; }
spex 라이브러리 사용:
spex 라이브러리는 동적 시퀀스를 반복할 수 있는 시퀀스 방법을 제공합니다. promise:
import { sequence } from 'spex'; function sequence(nextPromise) { // while nextPromise() creates and returns another promise, continue resolving it; }
배열의 요소 중 하나라도 거부되면 해당 거부가 발생하는 즉시 시퀀스가 거부된다는 점을 기억하세요. 이 동작을 통해 추가 요소가 처리되지 않습니다.
위 내용은 일련의 약속을 순서대로 실행하고 거부를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!