yield 如何作为 javascript 中的参数工作

How does yield work as a argument in javascript

我在了解 yield 并想知道 yield 作为函数的参数会做什么时遇到了这段代码。在这个地方

看起来像一个荣耀return
export function * throttle(func, time) {
  let timerID = null;
  function throttled(arg) {
    clearTimeout(timerID);
    timerID = setTimeout(func.bind(window, arg), time); // what does this do????
  }
  while(true) throttled(yield);
}

export class GeneratorThrottle {

  constuctor() {};

  start = () => {
    thr = throttle(console.log, 3000);
    thr.next('');
  };

  toString = () => {
    console.log(throttle);
    console.log('start =', this.start);
  };
};

使用next方法,您可以将数据作为参数传递给生成器函数。

function* logGenerator() {
  console.log(0);
  console.log(1, yield);
  console.log(2, yield);
  console.log(3, yield);
}

var gen = logGenerator();

// the first call of next executes from the start of the function
// until the first yield statement
gen.next();             // 0
gen.next('pretzel');    // 1 pretzel
gen.next('california'); // 2 california
gen.next('mayonnaise'); // 3 mayonnaise

func.bind(window, arg)只是用参数调用它的奇特方式,

其中 bind 方法 return 函数... 您可以在该函数中以 window 的形式访问 this...

示例:

function func(args) {
    console.log(this, args)
}
func.bind("this", "args")();