않는 한을 듣고 싶습니다 AWS API는 일종의 알림 끝점을 지원합니다 (API에 익숙하지 않습니다). 아마도 폴링에 고생 할 것입니다. 그러나 an EventEmitter
을 사용하면 콜백을 노출하는 영리한 API 뒤에 숨길 수 있습니다. 의사 틱 코드 :
// aws_server.js
var EventEmitter = require('events').EventEmitter;
var util = require('util');
function AwsServer(some_data) {
this.data = some_data;
EventEmitter.call(this);
};
util.inherits(AwsServer, EventEmitter);
AwsServer.prototype.createInstance = function() {
// Do something with an API to create an EC2 instance
console.log("Creating instance, data:", this.data);
// Here, you would begin polling for state changes, etc. waiting for
// the server to change state. We will simulate this with a setTimeout call.
setTimeout(function() {
this.emit('running');
}.bind(this), 3000);
};
module.exports = AwsServer;
// somewhere_else.js
var AwsServer = require('./aws_server')
var newServer = new AwsServer('some_data');
newServer.on('running', function() {
console.log('New instance is running');
});
newServer.createInstance();
setTimeout을 실험 할 때, 나는 한 번만 실행된다는 것을 깨달았고 setInterval을 사용하여 원하는 '실행 중'상태가 확인되면 중지 방법을 생각할 수 없었습니다. 이제 각 setTimeout을 원하는 '실행 중'상태에 도달 할 때까지 다른 하나씩 시작합니다. 마지막으로 실행되는 콜백이 진행되면서 ... 위에서 설명한 내용입니까? 차이점은 콜백이 전달되고 실행되는 대신 이벤트가 방출된다는 것입니다 ... 맞습니까? – pulkitsinghal
글쎄, 내 예제에서 setTimeout은 약간의 시간을 시뮬레이션하고, EventEmitter 이벤트를 내보내고들을 수 있음을 보여 주기만하면되었다. 그러나 설문 조사 방법에 관한 한 올바른 방향으로 가고있을 것입니다. 필자는 개인적으로 setInterval 대신에 다른 setTimeout을 호출하는 setTimeout을 선호합니다. 함수 내부의 작업이 해당 간격의 타이머보다 오래 걸리는 경우에 대비합니다. –
안녕하세요. Brandon, AWS API 또는 알림의 후크에 대해 아무도 응답하지 않았는지 확인하기 위해 조금만 기다려도 괜찮습니까? – pulkitsinghal