발전기 기능과 기능 썽크

썽크

썽크 임시 기능에 그 인수, 함수에 전달 기능과 다음이 임시 몸 이름으로 호출합니다.

함수 ( m ) { 리턴 분 * 2 ;     }



F (X + 5 );


VAR의 썽크 = 함수 () { 반환 X + 5 ; }; 함수 본체 ( 썽크 ) { 복귀 썽크 () * 2 ; }





x는 주요 기능, 일반적인 함수형 프로그래밍 아이디어를 전달 호출하는 정말 필요한 경우에만로, 임시 기능을 넣어 매개 변수입니다.

JS에서 썽크 함수 교체 식 아니지만 다중 파라미터 함수는, 단일 파라미터 버전으로 대체되고, 단 수락 인수로 콜백 함수를 본질적 기능 무두질 .

기능  썽크 ( FN ) { 반환 기능 (
) { // 함수 클로저의 매개 변수 저장 var에 인수 = 배열이 .prototype.slice.call ( 인수를 ) 함수의 매개 변수는 콜백입니다 반환 // 반환 함수 ( 콜백 ) { 콜백 함수 매개 변수 목록의 증가 // (args.push를 콜백) 돌려 (fn.apply 이 본는 ,, 인수) } } };










단지별로 사용을 썽크, 그것은 프로세스 관리를위한 조합 생성기가 필요합니다.

발전기

발전기의 기능은 우리가 실행의 올바른 순서를 보장하기 위해,이 반복자 수동 상관 값, 상태를 통과 사용할 수 반복자 반복자 객체를 반환합니다. 다음 방법으로 발전기 기능.

다음의 함수에 의해, 대응하는 식으로 수행 될 수있다 수득하고, 다음의 () 함수는 또한식이 항복 값을 반환로 사용할 수있는 파라미터를 취할 수 있으며, 수율은 어떠한 리턴 값 자체가 없기 때문에 ) (다음 있지 않으면 리턴 값이 정의되지의 파라미터, 각 작업의 수율은

함수 *  () { // ... }



여기서, g = 유전자 ();
했다 입술 g.next = ();

동안 (! res.done) { 콘솔 .LOG (res.value); 입술 g.next = (); } 다 "하나": //执行다음会返回{false 값}




발전기 편지 큰 열  썽크 기능과 발전기 기능 수는 단순히 정상적인 상황에서, 우리는 발전기 비동기 작업에 적합하지 않습니다 너무 () 실행 다음을 실행하는 데 주도권을 취할 필요, 반복 내부 개체에 대한 포인터를 반환합니다.

yield키 생성 함수의 실행은, 현탁 yield키워드 발생기로 호출자에게 반환 한 후 식의 값. 그것은의 발전기 기반 버전 간주 될 수 있습니다 return키워드.
yield키워드는 실제 돌려 IteratorResult두 가지 속성이 객체를, value하고 done. value속성은 yield발현 평가 결과 및 done되어 false완전히 완료되지 않은 발전기 기능을 도시.

발전기는 임의 값으로 전달되는 경우 next()에있어서, 상기 발전기의 현재 값이된다 yield동작에 의해 반환 된 값

자동 프로세스 관리 기능을 썽크

수 진짜 힘의 썽크 기능, 자동 생성기 기능을 실행

기능의  실행 ( FN가 ) { 했다 유전자 = FN ();


함수 다음 ( ERR, 데이터 ) { VAR ] 결과 = gen.next (데이터) / * 포인터가 다음 단계 생성기 함수 *로 이동 / IF (result.done) 복귀 ; / *하는 결정인지 단부 * / result.value ( 다음); / * 재귀는 * /에서 .value에 다음 // 썽크 후 함수의 매개 변수에만 콜백, 여기에 다음 기능입니다! ! , }






다음();
}

했다 g = 함수 (*) { var에 F1 = 항복 에서 ReadFile ( 'FILEA' ); VAR의 F2 = 항복 에서 ReadFile ( 'fileB' ); // ... var에 FN = 수율 에서 ReadFile ( 'fileN' ); };






가로장);

함수 발생기 다음 단계 (gen.next 법)에 제 다음 함수 포인터하고 완료되지 않은 경우 썽크 함수 (result.value 속성을 재 주입, (result.done 특성) 다음 함수를 함수 발생기를 종료할지 여부를 판단 ), 그렇지 않으면 종료


추천

출처www.cnblogs.com/wangziqiang123/p/11691158.html