파일을 JSON으로 읽으려고 시도하고 JSON을 조작 한 다음 조작 된 JSON을 flatten 함수로 리턴합니다. 아래는 나의 약속과 평평한 기능입니다.약속에서 .then() 값을 반환 하시겠습니까?
약속
const fs = require('fs');
module.exports = (filePath) => {
return new Promise((fulfill, reject) => {
fs.readFile(filePath, 'utf8', (err, res) => {
if (err) reject(err);
else fulfill(res);
});
});
};
것은 내가 {} 약속을 반환에 얻고 기능
flatten: (baseLoc, filePath, updateRev) => {
return readFilePromise(filePath)
.then((data) => {
const jsonObject = Object.assign({}, data);
const flatJson = flattener(jsonObject, baseLoc);
if (flatJson.$meta) {
delete flatJson.$meta;
}
if (updateRev === true || updateRev === 'true') {
flatJson.id = incrementVersion(flatJson.id);
}
return flatJson;
})
.catch(err => err);
}
을 평평하게. 내가 약속을 되 돌리지 않고 대신 returnJson statement에 의존한다면 나는 정의되지 않는다. StackOverflow/Google에서 이미 본 모든 것을 올바르게 구성했기 때문에 이것이 일어나는 이유는 확실하지 않습니다.
이상한 점은 코드를 통해 디버깅 할 경우 반환 값 flatJson 문이 실제로 원하는 값을 보유하고 있음을 알 수 있습니다. 다른 함수가 flatten 함수를 호출 할 때 종료하는 것입니다. 정의되지 않은 또는 {}와 함께.
아무 래도 약속을 지키지 않아도 평평한 결과를 반환하는 데 '평평'하지 않습니다. 약속을 되 돌리거나 콜백을 받아 나중에 결과와 함께 호출합니다. –
어떻게 부르십니까? 'flatten (...) .then (JSON.stringify) .then (send)'와 같은 것? – Bergi
@Bergi 별도의 파일에서 app.flatten (params)으로 호출하고 있는데, 제공 한 구문을 사용하기 위해 flatten을 약속으로 설정해야합니까? 나는 이것들이 멍청한 질문이라면, 약속에 대해 상대적으로 미안합니다. – Steve