일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- react-hook-form
- xlsx
- AWS
- electron-builder
- axios
- react DOM
- window.postMessage
- react
- gitignore
- icrawler
- JavaScript
- signIn
- 프로그래머스
- Route53
- timeinput
- cognito
- react-sortable-hoc
- readableStream
- react-admin
- electron
- API Gateway
- dynamodb
- TypeScript
- node
- 가상 DOM
- jimp
- zerocho
- react-xml-parser
- yml
- domtoimage
Archives
- Today
- Total
꾸준히 공부하는 개발자
[Node.js] ReadableStream 을 이용한 dblp.xml 파일 받아오기 본문
dblp.xml 이라는 대용량을 한번에 읽어오려다 보니 읽어 지지가 않았다.
그래서 선임분이 stream을 사용하라고 하여 검색을 해보았다. 비동기로 작동하는 것을 보고 Promise 를 반환하는 식으로 하여
동기적으로 처리할라고 하였다.
const asyncXML = (xml) => { //xml은 url
return new Promise((resolve, reject) => {
let result = [];
(async () => {
const fetchedResource = await fetch(xml)
const reader = await fetchedResource.body.getReader()
reader.read().then(function processText({done, value}) {
if (done) {
console.log('Stream finished. Content received:')
console.log(result)
resolve(result)
return
}
result.push(value)
return reader.read().then(processText)
})
})()
})
}
하지만 decode를 먼저하고 resolve 를 하려하니 너무 용량이 커서 그런지 resolve 가 되지를 않았다. 그래서 uInt8array 형식으로 받은다음
밖에서 decode를 한 후 파싱을 하였다.
const string = new TextDecoder("utf-8").decode(value);
'Node.js' 카테고리의 다른 글
[Node.js] url로 img Download (0) | 2020.04.27 |
---|---|
[Node.js] XML Parser (0) | 2019.12.20 |
[Node.js] bluebird.js Promise (concurrency) (0) | 2019.12.18 |
[Node.js] Jimp crop을 이용하여, 사진 자르기 (0) | 2019.11.19 |
[Node.js] Jimp 이용하여 비율에 맞게 resize (0) | 2019.11.18 |
Comments