js中的Generators函数
generator一般操作
generator函数的作用就是函数体分段执行,yield表示分隔点function *test() { ???console.log(1); ???yield 1; ???console.log(2); ???yield 2; ???console.log(3); ???yield 3;}var g = test();console.log(g.next()) ???????// { value: 1, done: false }console.log(g.return(2)) ????// { value: 2, done: true },return不执行任何函数体,直接结束函数执行console.log(g.next()) ???????// { value: undefined, done: true }
捕获异常
function *test() { ???try { ???????yield 1; ???????yield 2; ???} catch (error) { ???????console.log(error.message); ???}}var g = test();console.log(g.next())console.log(g.throw(new Error("Error"))) ?// { value: undefined, done: true } 捕获异常,同时结束函数执行console.log(g.next())
传递值给generator函数
function *test() { ???var s; ???s = yield; ???console.log(s); ???s = yield; ???console.log(s);}var g = test();g.next(); ??// 第一次调用next会无视传递的valueg.next(1); ?// 第二次传递value现在才有用
yield代理到其他的generator函数
function *test() { ???yield 1; ???yield *other();}function *other() { ???yield 2; ???yield 3;}var g = test();console.log(g.next()) ?// 1console.log(g.next()) ?// 2console.log(g.next()) ?// 3
遍历generator函数
function *test() { ???yield 1; ???yield 2; ???yield 3;}for(let item of test()) { ???console.log(item);} ?// 1 2 3
js中的Generators函数
原文地址:https://www.cnblogs.com/ye-hcj/p/10350984.html