약속이 예상대로 작동하는 데 문제가 있습니다. 다음 작업을 수행해야합니다.약속을 해결하기 전에 nodejs then() 함수가 실행됩니다.
표준 출력에서 파일 이름을 가져 와서 줄로 나누어 복사합니다. 복사 작업이 끝나면 다른 작업을 시작하고 여기에 문제가 있습니다.
오류가 발생하면 Promise 내부에 복사 기능을 만들었습니다. 오류가 발생해도 루프가 완료된 후 오류가 해결되지 않으면 어떤 이유로 인해 then() 함수가 복사되기 전에 실행됩니다. 작업이 완료되었습니다
var lines = stdout.split(/\r?\n/);
copyUpdatedFiles(lines).then(
function() {
console.log('this one should be executed after copy operation');
}
);
function copyUpdatedFiles(lines) {
return new Promise(function(resolve, reject) {
for (var i = 0; i < linesLength; i++) {
fs.copy(lines[i], target, function(err) {
if (err) {
reject();
}
});
}
resolve();
});
}
제가 분명히 뭔가를 잃어 버리게 도와주세요.
더 구체적으로 약속을 여러 번 거부하고 해결할 수 없으므로 해결할 경우 한 번 해결하고 거부 할 경우 거부 + 휴식 또는 다른 방법으로 해결할 수 있습니다. – atrifan
@atrifan : 문제는 반복 된 호출이 아니라 너무 빨리 첫 번째 호출을하는 것입니다. 반복적으로 거부/해결 호출은 의미가 없지만 문제의 근본 원인은 아닙니다. –