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会无视传递的value g.next(1); // 第二次传递value现在才有用
- yield代理到其他的generator函数
function *test() { yield 1; yield *other(); } function *other() { yield 2; yield 3; } var g = test(); console.log(g.next()) // 1 console.log(g.next()) // 2 console.log(g.next()) // 3
- 遍历generator函数
function *test() { yield 1; yield 2; yield 3; } for(let item of test()) { console.log(item); } // 1 2 3
原文地址:https://www.cnblogs.com/ye-hcj/p/10350984.html
时间: 2024-10-27 06:39:02