Promise를 순차적으로 해결
이 문서에서는 Promise를 순차적으로 해결하는 문제를 해결하는 방법을 살펴봅니다.
The 제공된 코드 조각은 재귀를 사용하여 파일 배열을 순차적으로 읽고 이후에만 약속을 해결합니다. 모든 파일을 읽었습니다. 이 접근 방식은 기능적이지만 불필요한 재귀를 발생시킵니다.
더 간단한 대안은 for 루프를 활용하거나 Promise 해결 방법을 줄이기 위해 줄이는 것입니다.
var readFiles = function(files) { var p = Promise.resolve(); // Q() in q files.forEach(file => p = p.then(() => readFile(file)) ); return p; };
리듀스 사용:
var readFiles = function(files) { return files.reduce((p, file) => { return p.then(() => readFile(file)); }, Promise.resolve()); // initial };
Promise 라이브러리는 동시성을 갖춘 Bluebird의 map()과 같이 순차적 해결을 위한 유틸리티 메서드를 제공하는 경우가 많습니다. 1:
var Promise = require("bluebird"); var fs = Promise.promisifyAll(require("fs")); var readAll = Promise.resolve(files).map(fs.readFileAsync,{concurrency: 1 });
최신 JavaScript에서는 비동기 함수를 순차적 약속에도 사용할 수 있습니다.
async function readFiles(files) { for(const file of files) { await readFile(file); } };
위 내용은 JavaScript에서 Promise를 순차적으로 어떻게 해결할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!