* Promisification
: 콜백 기반 함수의 일부 특성을 알고있을 경우, 콜백 기반함수를 프라미스를 반환하는 동일한 함수로 변환할 수 있다.
: 일부 고급 시나리오에서는 생성자를 사용하여 수동으로 프라미스를 생성해야 할 필요가 있기도 하다.
1) 지원하는 예
- fs 모듈의 promises 객체를 사용하면, fs API의 프라미스화된 버전을 사용할 수 있음
- superagent는 promise를 지원함
return superagent.get(url)
.then((res) => {
content = res.text;
return mkdirpPromises(dirname(filename))
})
.then(() => fsPromises.writeFile(filename, content))....
2) 프라미스의 순차반복 패턴
- 루프를 사용하여 동적으로 프라미스 체인을 구축 -> 사실 잘 이해가 안간다...
function spiderLinks(currentUrl, content, nesting){
let promise = Promise.resolve() //정의되지 않은 빈 프라미스 정의, 체인의 시작점
if (nesting === 0){
return promise
}
const links = getPageLinks(currentUrl, content);
for(const link of links){
promise = promise.then(() => spider(link, nesting - 1))
// 체인의 이전 promise에서 then을 호출하여 얻은 새로운 프라미스로 promise 변수 갱신함
// promise 비동기 반복패턴
}
return promise
}'NodeJs' 카테고리의 다른 글
| Node.js 디자인패턴, 병렬실행 패턴 (0) | 2023.11.20 |
|---|---|
| Node.js 디자인패턴, 순차실행 (0) | 2023.11.16 |
| Node.js 디자인패턴, 콜백규칙적용 - 빠른반환원칙 (0) | 2023.11.15 |
| [Node.js 디자인패턴] 모듈 시스템 (0) | 2023.08.22 |
| NodeJS Sqlite3연동, errno :14 , code :SQLITE_CANTOPEN 오류 (0) | 2023.07.20 |
댓글