Generator函数

  • function和函数名之间有一个星号
  • 函数内部使用yield表达式,定义不同的内部状态
  • 只有调用next方法才会遍历下一个内部状态
  • 每次遇到yield函数暂停执行,下一次再从该位置继续向下进行(Generator函数不适用yield表达式的话就变成了一个单纯的暂缓执行函数)

  • yield表达式只能用在Generator函数里面

  • yield表达式如果用在另外一个表达式中一定要加括号

    function* demo(){
        console.loh('hello'+yield)    //SyntaxError
        console.log('hello'+yield 123)     // SyntaxError
    
        console.log('hello'+(yield))    //OK
        console.log('hello'+(yield 123))
    }
    
  • yield表达式用作函数参数或者放在肤质变大时的右边可以不加括号

    function* demo(){
        foo(yield 'a',yield 'b');        //OK
        let input = yield;        //OK
    }
    

results matching ""

    No results matching ""