저는 javascript에 비교적 익숙하며 nodejs에서 작업하고 있습니다. 나는 woulf가 다음 코드로 끓는다면 상황이있다. 아래 코드에서했던 것처럼 다른 변수 (temp)를 작성하지 않고 콜백에서 직접 리턴 할 수 있습니까?자바 스크립트에서 스코핑은 어떻게 작동합니까?
exports.run = function(req, res) {
var testRunId = req.body.testRunId;
var testFileDir = './uploads/temptestfiles/'+ testRunId + '/';
var error = null
var status ;
mkpath(testFileDir, function (err) {
if (!err) {
error = {error:'could not create logs directory'}
status = 500
};
});
if (status === 500) {
return res.send(500, error);
}
//handle many more cases
}
다음은 다운 버전입니다.
var a = function(param,callback) {
callback(param);
};
var base = function() {
val temp = null;
a(5, function(a){
//can I do something like return 2*a and end the parent function
temp = 2*a;
});
return temp;
}
나는 실제로 내가 그 디렉토리가 생성되기 전에 추가로 코드를 실행하려면 해달라고로 mkpath의 동기 버전을 사용하는 데 필요한 깨달았다. 그래서 내 코드를
try {
mkpath.sync(testFileDir);
} catch(err) {
return res.status(500).send({error:'couldn\'t create directory to store log files'});
}
중 하나가 동기, 그리고 당신이 필요하지 않습니다, 또는 비동기, 그리고 다음이 작동하지 않을 것입니다. 우리는 정말로 덜 무례한 예가 필요합니다. –
req, res와 관련된 실제 코드를 추가했습니다. – raju
그리고 실제 코드가 대답을 변경했습니다 ... – epascarello