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")();
我在了解 yield 并想知道 yield 作为函数的参数会做什么时遇到了这段代码。在这个地方
看起来像一个荣耀returnexport 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")();