ES6 generator 상태 기 요점 기록
try, catch () 내부 오 류 를 캡 처 한 후 next () 를 한 번 더 실행 합 니 다.
var gen = function* gen(){
try {
yield console.log('a');
} catch (e) {
// ...
}
yield console.log('b');
yield console.log('c');
}
var g = gen();
g.next() // a
g.throw() // b
g.next() // c
return 조기 종료
try {} finally () {} 구문 에서 try {} 에서 return 하면 finally 가 늦 어 집 니 다.
문법
yield [1,2,3,4,5,6] ;
yield* [1,2,3,4,5,6] 123456( )
yield 'hello' ;
yield* [1,2,3,4,5,6] ( )
function* foo(){
yield 2;
yield 3;
yield 'foo';//return 'foo';
}
function* bar(){
yield 1;
var v = yield *foo();
console.log('v: '+v);
return 4;
}
var it = bar();
console.log(it.next())
console.log(it.next())
console.log(it.next())
console.log(it.next())
console.log(it.next())
generator 함 수 는 구조 함수 가 아니 라 변통 할 수 있 습 니 다. this 속성 도 있 고 next 방법 도 있 습 니 다.
function* gen(){yield this.a = 1;}
function F(gen){return gen.call(gen.prototype)
var f = new F(gen)
f.next()
console.log(f)
async generator 문법 사탕
function gen(a){
let gen = (function* (){
var a = yield promise(22)
console.log(a)
var b = yield promise(44)
console.log(b)
})();
return new Promise((resolve,reject)=>{//
callNextStep(a)
function callNextStep(res) {
let result;
try { // generator
Promise.resolve(res).then((data)=>{
result = gen.next(data);
next(result);
}).catch(e=>{ // yield promise
return reject(e);
})
} catch (e) {
return reject(e);
}
}
function next({done,value}) {
if(done){
resolve(value)
}else{
callNextStep(value)
}
}
})
}
gen().catch((e)=>{
console.log(' ',e)
})
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.