이 기사의 내용은 ES6에서 Generator의 의미에 관한 것입니다. ES6의 Generator 도입은 특정 참고 가치가 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
Generator in ES6
Generator는 ES6의 매우 흥미로운 기능이면서도 이해하기 쉽지 않은 기능이기도 합니다. 블록 수준 범위를 제공한다는 명백한 목적과 달리 이 것의 목적은 무엇입니까? let/const
function *g(){ console.log('start'); yield 1; console.log('middle'); yield 2; console.log('end'); } var g1 = g(); console.log(g1.next()); // start // {value: 1, done: false} console.log(g1.next()); // middle // {value: 2, done: false} console.log(g1.next()); // end // {value: undefined, done: true}
Generator와 비동기
의 형태 Generator는 기능을 중지할 수 있으므로, 머리가 좋은 일부 사람들은 Generator를 비동기 프로그램 처리에 사용할 수 있는지 생각해 보았습니다. 먼저 전통적인 예를 살펴보겠습니다:function asyn(fn) { return new Promise((resolve,reject)=>{ setTimeout(()=>{ fn(); resolve(true); }, 1000); }); } function main() { console.log('start'); asyn(function(d) { console.log('async one'); asyn(function(d) { console.log('async two'); console.log('end'); }); }); } main();
function asyn(fn) { return new Promise((resolve,reject)=>{ setTimeout(()=>{ fn(); resolve(true); }, 1000); }); } co(function*() { console.log('start'); yield asyn(function(d) { console.log('async one'); }); yield asyn(function(d) { console.log('async two'); }); console.log('end'); }); function co(fn) { return new Promise((resolve,reject)=>{ let g = fn(); onFullfilled(); function onFullfilled() { let ret = null; ret = g.next(); next(ret); } function next(ret) { if(ret.done) return resolve(ret.value); ret.value.then(onFullfilled); } } ); }
Generator 및 Koa
Koa는 Node.js 기반의 웹 애플리케이션 프레임워크입니다. Koa에서 처리되는 비동기 프로그램은 주로 네트워크 요청(HTTP), 파일 읽기 및 데이터 쿼리입니다. 여기에는 비동기 시나리오가 많이 있습니다. 프로그램 계층화를 추가하고 기존 콜백 방법을 사용하면 콜백이 너무 많아집니다.app.on('get', function(){ auth(function(){ router(function(){ find(function(){ save(function(){ render(function(){ //...... }) }) }) }) }) })
위 내용은 ES6에서 Generator는 무엇을 의미합니까? ES6의 제너레이터 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!