2014-02-26 2 views
0

콜백 함수 블록 자체 내에서 다른 메서드에 콜백 매개 변수를 전달할 수 있습니까? 예 :콜백 함수를 자신의 매개 변수로 전달

var resultCallback = function(result){ 
    if(result) 
    { 
     alert('success!'); 
    }else{ 
     callServiceB(resultCallback); 
    } 
} 

callServiceA(resultCallback); 

이 이유는 자바 스크립트에서 Chain of Responance 패턴과 같은 운동을하고 싶습니다.

시도는 봤지만 아직까지는 얻지 못했습니다. 모든 아이디어 나 의견을 환영합니다.

+1

예. 가능합니다. 너 해봤 어? – Bergi

+0

그러나 동일한 기능에 책임 체인 ('callServiceB')과 결과 액션 ('alert ('success!')')을 넣는 것은 odd/bad practice/design smell입니다. 결과에 대해 별도의 콜백을 사용하십시오. 그런 다음'callServiceA (orCallServiceB (alertResult))'또는'(callServiceA, callServiceB) (alertResult)' – Bergi

+0

과 같이 보일 수 있습니다. 다른 메소드 호출이 많아서 간결하게 2로 단순화했습니다. 논리는 다음과 같습니다. 1. 함수를 호출합니다. 2. 함수가 정상이면 함수를 호출합니다. 3. 함수가 정상이면 함수를 호출하고 함수는 호출합니다. – ipohfly

답변

0

콜백 함수 블록 자체 내에서 다른 메서드에 콜백 매개 변수를 전달할 수 있습니까?

예. 가능합니다. 시도 해봐!

나는 책임 체인 (callServiceB(resultCallback))과 나쁜 연습/디자인 냄새 같은 결과 동일한 기능의 동작 (alert('success!')) 보이는 모두 퍼팅 책임 패턴

의 체인과 같은 운동 뭔가 할 . 결과에 대해 추가 콜백을 사용하고 체인의 선언을 분리해야합니다.

그러면 callServiceA(orCallServiceB(alertResult)) 또는 either(callServiceA, callServiceB, …)(alertResult)처럼 보일 수 있습니다.

로직 등등 1. 통화 기능 2. 만약 함수 ok 사인 다음 함수 B 3. 함수 B를 확인하는 경우 호출 후 호출 함수 C와 같다 .. - ipohfly 8 분 전

chain of responsibility과 같이 들리지 않습니다. 현재 함수가 실패 (인수를 처리 할 수 ​​없었 음) 한 경우에만 다음 함수를 호출합니다. 당신이 묘사하는 것은 모나드 체인 (이전의 것에 의존하는 한 행동)과 비슷하게 들립니다. 즉, 을보십시오 :

callServiceA.then(callServiceB).then(…).then(resultCallback); 
관련 문제