>웹 프론트엔드 >JS 튜토리얼 >JavaScript에서 Promise를 순차적으로 어떻게 해결할 수 있나요?

JavaScript에서 Promise를 순차적으로 어떻게 해결할 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2024-12-15 07:37:09674검색

How Can I Resolve Promises Sequentially in JavaScript?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.