. 당신이 작성하는 writeStream 비동기입니다. 즉,이 불확정 완료 의미 미래의 시간. 한편, 코드의 나머지 부분은 계속 실행하고 파일이 완료되기 전에 따라서 당신이 그것을 읽어보십시오. 당신이 가지고있는 코드에서
, 여기에 일련의 이벤트입니다.
- writeStream 만들기
- http 시작
request()
- 미래의 데이터는
request()
에서 .pipe()
으로 사용자 스트림으로 전달됩니다.
finish
스트림의 이벤트 처리기를 등록하십시오.
- 에서 데이터를 가져오고
request()
에서 데이터가 도착하고 버퍼링 될 수있는 쓰기 스트림으로 전송됩니다.
- 더 많은 데이터가
request()
에서 도착하고 버퍼링 될 수있는 쓰기 스트림으로 전송됩니다.
- 요청이 완료되면 writeStream에 데이터를 디스크로 플러시하고 자체를 종료하도록 요청합니다.
finish
이벤트가 발생합니다.
close
이벤트 처리기를 등록하십시오.
close
이벤트가 발생합니다.
당신은 아마 당신이 원하는 것을 할 스트림 알림을 사용할 수 있지만 그냥 파일을 테스트하려면 쓰기 스트림에 가까운 이벤트에 대한 완료 핸들에 fs.readFileSync()
을 넣을 수 있습니다.
const fs = require('fs');
const request = require("request")
const dataFile = 'data/someFile.json'
const url = "https://api.someUrl"
const file = fs.createWriteStream(dataFile);
request(url).pipe(file);
file.on('finish',function(){
console.log('file download to ',dataFile)
}).on('close', function(){
console.log('File Closed ');
// file is available for reading now
var datos = fs.readFileSync(dataFile, 'utf8');
console.log(datos);
});
또한 스트림을 .destroy()
개 필요하지 않습니다. 기본적으로 autoClose
으로 설정되며 파이프에 연결된 스트림이 완료되면 자동으로 닫힙니다. 그리고 finish
오류 처리기 내에 .on('close', ...)
이벤트 처리기가 필요하지 않습니다.
- 이 writeStream는
- 이
.pipe()
하여 스트림에 request()
에서 도착하는 HTTP request()
- 후크 미래의 데이터를 초기화 만들기 :이 새로운 제안 코드에서
, 여기에 일련의 이벤트입니다.
finish
스트림의 이벤트 처리기를 등록하십시오.
- 레지스터
close
이벤트 처리기.
- 데이터는
request()
에서 도착하여 버퍼링 될 수있는 쓰기 스트림으로 전송됩니다.
- 더 많은 데이터가
request()
에서 도착하고 버퍼링 될 수있는 쓰기 스트림으로 전송됩니다.
- 요청이 완료되면 writeStream에 데이터를 디스크로 플러시하고 자체를 종료하도록 요청합니다.
finish
이벤트가 발생합니다.
close
이벤트가 발생합니다.
- 전화
fs.readFileSync()
는 **
노드 비동기 ** 인 파일을 읽을 수 있습니다. 마지막 줄은 파일 쓰기가 완료되기 전에 실행됩니다. 'file.on'의 콜백 안에 넣으면 작동 할 것입니다. –