Node.js에서 서비스를 작성하는 고전적인 비동기/동시성 문제가 발생합니다. 요청에 대한 응답으로 RDBM에서 일부 데이터를 가져 오는 개체가 있고 행 반입이 완료 될 때 EventEmitter
을 사용하여 fin
이벤트를 내 보냅니다.Node.js 요청 직렬화에 대한 가장 간단한 접근법
예상 한대로 서비스 호출자가 여러 개의 거의 동시 호출을하면 예측할 수없는 순서로 행이 반환됩니다. fin
이벤트는 호출 함수에서 발생한 요청에 대한 이해와 일치하지 않는 행에 대해 발생합니다.
var mdl = require('model.js');
dispatchGet: function(req, res, sec, params) {
var guid = umc.genGUID(36);
mdl.init(this.modelMap[sec], guid);
// mdl.load() creates returns a 'new events.EventEmitter()'
mdl.load(...).once('fin',
function() {
res.write(...);
res.end();
});
}
간단한 테스트는 mdl.guid
자주 guid
에 해당하지 않음을 보여줍니다
는 여기에 내가 (관련성 간체) 일어나고있어 한 내용입니다.
함수 내에서 new events.EventEmitter()
을 만들면 모든 요청에 대해 이산 EventEmitter
을 생성하여이 문제를 해결할 수 있다고 생각했지만 분명하지는 않습니다. new
에 관계없이 다른 개체와 마찬가지로 개체 지속성의 동일한 규칙이 적용되는 것으로 가정합니다.
저는 백그라운드에서 C 프로그래머입니다. 순환 큐 또는 해싱 스키마를 사용하여 이러한 응답을 요청과 연결할 수있는 자체 스키마를 만들 수 있습니다. 그러나 나는이 문제가 이미 여러 번 해결되었다고 생각합니다. 내 연구 결과를 가장 잘 처리 할 수있는 방법에 대한 많은 의견이있었습니다. 다양한 종류의 대기열 구현 인 Futures
등이 있습니다.
좋은 비동기식 흐름 제어는 무엇입니까? 내가 의존 할 필요가 없다면 일부 종속성의 거대한 패러다임 전환에 무릎을 꿇고 싶지 않을 것입니다. 제 3 자 모듈이 가장 적합한 상대적으로 단순하고, 표준적이고, 확실한 해결책 및/또는 광범위한 합의가 있습니까?
아! JavaScript OO 구문과 노드 내부 관계를 이해하지 못하는 것 같습니다. 고맙습니다! –