임 다음 코드가있는이 코드는 지정된 함수 myFunc
에 구현되었습니다. 모든 함수가 완료 될 때까지 기다리십시오. (myFunc) 즉, 파일이 성공적으로 추출되었을 때/아니요. 반환 이 오픈 소스부터 일부 상태 (성공/오류)이벤트 대신 약속 사용
var myFunc =() => {
var DecompressZip = require('decompress-zip');
var unzipper = new DecompressZip(filename)
unzipper.on('error', function (err) {
console.log('Caught an error');
});
unzipper.on('extract', function (log) {
console.log('Finished extracting');
});
unzipper.on('progress', function (fileIndex, fileCount) {
console.log('Extracted file ' + (fileIndex + 1) + ' of ' + fileCount);
});
unzipper.extract({
path: 'some/path',
filter: function (file) {
return file.type !== "SymbolicLink";
}
});
};
이가 (... 반환 상태를 확인하기 위해) 내 의도는 다음과 같은 promisify 또는 으로 약속을 변경하는 문제가 이벤트와 함께 일하고있다
var myFunc =() => {
return new Promise(function(resolve, reject) {
var DecompressZip = require('decompress-zip');
var unzipper = new DecompressZip(filename)
unzipper.on('error', function (err) {
console.log('Caught an error');
reject();
});
unzipper.on('extract', function (log) {
console.log('Finished extracting');
resolve();
});
unzipper.on('progress', function (fileIndex, fileCount) {
console.log('Extracted file ' + (fileIndex + 1) + ' of ' + fileCount);
});
unzipper.extract({
path: 'some/path',
filter: function (file) {
return file.type !== "SymbolicLink";
}
});
};
내 질문은 : 나는 너무 JS의 전문가가 에 의미가 이벤트를 변환 할합니까 않을거야 때문에
- 을 약속?
- 유스 케이스에 사용할 수있는 다른 솔루션이 있습니까? ?
이 당신이 "종료"이벤트는 한 번만 실행됩니다 절대적으로 긍정적 인 경우에만 의미가 있습니다 약속에 이벤트를 변환 영업 https://github.com/bower/decompress-zip
예, 발신자가 (단일) '추출'이벤트를 기다릴 수있게하려면 약속을 반환하는 것이 절대적인 의미를 갖습니다. – Bergi
'reject()'에'err'을 넘겨 주어야합니다. – Bergi
@Bergi OP가 코드의 소유자가 아닌 것으로 의심됩니다. 코드 검토에서 문제가 될 수 있습니다. – Mast