HTTP 요청에서 작동하는 컨트롤러에 프런트 엔드에 추가 된 게시물을 저장하는 코드가 있습니다. 그래서 저는 Model.create()와 같은 것을합니다. 이제 콜백이 발생합니다. 프런트 엔드가 사용자에게 적절한 메시지를 표시 할 수 있도록 게시물이 성공적으로 추가되었는지 여부를 반환하려고합니다. 그러나 create 메소드는 비동기 적으로 작동합니다. 다음 은 샘플 코드입니다 :비동기 성질을 관리하는 SailsJS/NodeJS
create: function(req, res){
Activity.create(req.body).done(
function(err, persistedActivity) {
// Error handling
if (err) {
return res.json({success: false});
// The Activity could not be created!
} else {
return res.json({success : true});
}
}
);
}
그러나 Activity.create() 메서드는 비동기이기 때문에이 코드가 작동하지 않습니다. 다른 질문이나 게시물에서도 읽었습니다. 내가 찾고있는 정확한 구현을 암시하는 것은 없지만, "노드의 비동기 성질과 싸우지 말라. 나중에는 다 치지 않을 것이다."라고 말하면서, 다른 모든 사람들처럼 나를 믿는다. 나는 상처 받기를 원하지 않는다. 본질적으로 이것을 처리하는 방법에 대한 제안이 필요합니다.
create: function(req, res){
Activity.create(req.body)
.then(function(persistedActivity) {
return res.json({success : true});
})
.fail(function(err){
return res.json({success: false});
// The Activity could not be created!
})
}
내가 약속하지 않고 SailsJS를 사용하는 것과 익숙하지 해요,하지만 당신은 done
때 대신 exec
를 사용하여 시도 할 수 있습니다 : 당신이 항해의 약속이 변경을 원했고 경우
수 복제를 사용하는 경우 [비동기 콜백 함수에서 값을 반환하는 방법 ?] (http://stackoverflow.com/questions/6847697/how-to-return-value-from-an-asynchronous-callback-function) –
아니, 거기에 그것을 얻을 수 없습니다. 그것은 나에게 해결책을주지 않으며, 그것을 통과했다. –
그래, 함수에서 약속을 되 돌릴 수 있겠 니? –