thunk 函数

 

 

function* f() {
        console.log(1);
        for (var i = 0; true; i++) {
            console.log('come in');
            var reset = yield i;
            console.log(reset);
            if (reset) { i = -1; }
        }
    }

    // 这个时候并不会执行 1
    var g = f();
    /*
      输出1 和 come in,
      只会执行 yield 后面的语句, 并且暂停,
      但是这个时候 reset 并没有赋值,
      最终返回{value: 0, done: false}
    */
    g.next();
    /*
      reset 赋值 333;
      输出 333;
      输出 come in;
      返回{value: 0, done: false}
    */
    g.next(333);

 

posted @ 2017-08-02 06:40  zhengming  阅读(127)  评论(0编辑  收藏  举报