2015-01-15 2 views
-2

엔티티 A의 소켓에서받은 이벤트를 수신하고이 이벤트를 기반으로 작업을 실행하는 노드 JS 응용 프로그램이 있습니다. 이 작업에는 약속 체인을 기반으로하는 다양한 엔터티 (A 포함)에 대한 호출이 포함됩니다.노드 JS는 이벤트 도착을 기반으로 실행을 다시 시작합니다.

실제로 구현해야하는 것은 엔티티 A에서 작업을 호출하고 A 응답을 기반으로하지 않고 새로운 이벤트를 기반으로 콜백을 실행하는 메커니즘입니다. 따라서 흐름은 다음과 같습니다.

return new RSVP.Promise(function (resolve, reject) { 
    run action1(); 
    .then(function (response) { 
     return action2(); 
    }) 
    .then(function (response) { 
     return action3(); 
    }) 
    .then(function (response) { 
     // code to wait for an event to arrive and resume this 
    }) 
} 

이 작업을 수행 할 수 있습니까?

+1

시도해 보셨습니까? – Miki

+0

사실 나는 그것이 어떻게 성취 될 수 있는지 모른다. – ic150

+0

''실행 '이란 무엇입니까? 그것은 약속을 되 돌리는가? 왜 그 뒤에 세미콜론을 썼습니까? –

답변

0

주변에 new Promise이 필요하지 않은 것 같습니다. run_action이 약속을 반환한다고 가정하면

return run_action1() 
    .then(function (response) { 
     return action2(); 
    }) 
    .then(function (response) { 
     return action3(); 
    }) 
    .then(function (response) { 
     return new Promise(function(resolve, reject) { 
      listen(resolve); 
     }); 
    }) 
    .then(somethingElse); 
+0

답장을 보내 주셔서 감사합니다. 내가 알고 싶은 것은 듣기 기능이 구현되는 방식입니다. 이벤트가 도착할 때까지 대기하게됩니다. 또한 실행을 재개하기 위해 이벤트가 도착할 때 무엇을 호출해야합니까? – ic150

+0

당신은 어떤 이벤트 발생기에서 어떤 이벤트를 청취하는데 필요한 것을 수행하기 위해 listen 함수를 작성합니다. 일반적으로'thing.on ("event", resolve)'와 같은 것입니다. 실행을 다시 시작하기 위해 이벤트가 도착하면 아무 것도 호출하지 않아도됩니다. 그게 약속이 당신을 위해하는 일입니다. 약속이 해결되면,'then' 메쏘드에 지정된 함수가 실행될 것입니다. –

관련 문제