2014-11-29 3 views
0

약속을 사용할 때 Node JS의 "보증 준비"패턴에 대해 좋은 아이디어가 있는지 궁금합니다. ... 나는 이런 식으로 뭔가를 가지고,하지만 난 그것의 주요 문제는 내가 약속에 대한 그 때는 (CB)가 실제로는 오히려 다른 핸들러 체인보다 이전을 덮어 생각한다는 사실 생각약속 및 보증 준비 노드 JS

function awaitQueueCreation() { 
    if (!q._queueURL) return whenQueueCreated; 
    else return p.resolve(q._queueURL); 
    } 

    q.someQueueMethod = function(param) { 
     awaitQueueCreation().then(function() { 
      // do what this method is supposed to do... 
     }); 
    }; 

이런 종류의 것을 어떻게 처리할까요?

답변

2

동일한 약속에 추가 .then() 처리기를 추가하면 동일한 약속에 대한 두 번째 알림이 생성됩니다. 이전의 .then() 핸들러에는 연결되지 않습니다. 이전 .then() 핸들러를 겹쳐 쓰지 않습니다.

그래서 두 개의 핸드백을 추가하면 약속이 채워지는 동안 두 개의 콜백이 차례로 나옵니다.

첫 번째 .then() 처리기 자체가 완료되지 않은 약속을 반환하면 두 번째 .then() 처리기가 여전히 즉시 호출됩니다 (새 채워지지 않은 약속에 "연결"되지 않음).

p.then(...).then(...) 

하지 : 체인이 약속을

,이 같은 것을 수행해야 내 솔루션이 최적처럼

p.then(...) 
p.then(...) 
+0

이 경우를 보인다. – JayPrime2012

+0

@ JayPrime2012 - 실제 코드를 이해하거나 그에 대한 반응을하기에 충분한 코드를 포함하지 않았으므로 방금 언급 한 개념을 설명하려고했습니다. – jfriend00