아니요, 다음 연결 호출이 아직 발생하지 않았고 해석기가 존재하는지 여부에 대한 어떠한 증거도 제공하지 않기 때문에 함수 호출이 동일하게 보이는 경우 지정된 메서드가 꼬리 위치에 있는지 감지 할 수 없습니다 오는 또 다른 연쇄 호출.
는
당신은 당신이 찾고있는 단서였다 옵션 두 번째 인수 만들 수
: 두 번째 인수가 존재하고 적절한이 있다면 그런
var some = g.f(arg1).f(arg2).f(arg3, "end");
, 당신의 f()
기능은 확인 것 가치가 있다면, 꼬리 작업을 수행 할 수 있습니다.
또는 당신이 만들 수는 f()
의 약간 다른 버전 fTail()
라고 (또는 당신은 전화를 원하는) :
var some = g.f(arg1).f(arg2).fTail(arg3);
fTail()
는 다음과 같이 수 :
xxx.prototype.fTail = function() {
var retVal = this.f.apply(this, arguments);
// now do your tail operations here
return retVal;
};
당신이 제안한대로, 나는 생각부터 배열의 배열 에서 귀하의 모든 문제를 해결하는 것, 사용하기 쉽고 잘 수행 할 것입니다 :
var some = g.f([arg1, arg2, arg3], fn);
감사합니다. 난 라이브 net - 유선 데이터 구조를 구현하려고 내 github을 볼 자유롭게 : hefeust/retiare 만약 당신이 그것에 대한 아이디어를 만들 것입니다 .. 나는 결정하려고합니다 : g.relation(). 대 g.relation ([역할], [처리자]) 어쩌면 두 번째 접근법 (체인화되지 않은, 완전하게하지 않음)은 롤 (role1) .role (role2) .on 배열로 지정)이 답변을 고려한 후에 이기게됩니다. 안부 –
@HefeustCORTES - 단일 메서드 호출로 항목 배열을 수락하는 것은 N 코드화 된 함수 호출을 작성하는 것보다 코드 작성이 적고 실행 속도가 빠르며 물론 처리 한 시점을 알 수 있습니다. 배열의 마지막 것. 그렇다고해서 연쇄가 많은 경우에 유용하지는 않지만 (보통 그렇습니다), 일반적으로 같은 방법으로 반복해서 사용하는 것은 아닙니다. – jfriend00