Javascript 渐进式(或迭代式)回调

Javascript 渐进式(或迭代式)回调,javascript,node.js,callback,Javascript,Node.js,Callback,前几天我读到了一篇关于一种特殊类型的回调的文章,当你反复调用它时,这种回调会随之进行。第一次调用它并返回时,它执行A,下一次调用它时,它执行B。最终,它以某种方式发出了最后行动已经采取的信号 我记不起它叫什么,在我的历史中也找不到它,所以我不知道该搜索什么。我需要帮助。我想您可能需要的是生成器功能。它是由ES6引入的 调用生成器函数不会立即执行其主体;而是返回函数的迭代器对象。当调用迭代器的next()方法时,将执行生成器函数体,直到第一个yield表达式出现,该表达式指定要从迭代器返回的值 看

前几天我读到了一篇关于一种特殊类型的回调的文章,当你反复调用它时,这种回调会随之进行。第一次调用它并返回时,它执行A,下一次调用它时,它执行B。最终,它以某种方式发出了最后行动已经采取的信号


我记不起它叫什么,在我的历史中也找不到它,所以我不知道该搜索什么。我需要帮助。

我想您可能需要的是
生成器功能。它是由ES6引入的

调用生成器函数不会立即执行其主体;而是返回函数的迭代器对象。当调用迭代器的next()方法时,将执行生成器函数体,直到第一个yield表达式出现,该表达式指定要从迭代器返回的值

例如:

function* idMaker() {
  var index = 0;
  while (index < 3)
    yield index++;
}

var gen = idMaker();

console.log(gen.next().value); // 0
console.log(gen.next().value); // 1
console.log(gen.next().value); // 2
console.log(gen.next().value); // undefined
函数*idMaker(){
var指数=0;
而(指数<3)
产量指数++;
}
var gen=idMaker();
console.log(gen.next().value);//0
console.log(gen.next().value);//1.
console.log(gen.next().value);//2.
console.log(gen.next().value);//未定义

我想您可能要找的是
生成器功能。它是由ES6引入的

调用生成器函数不会立即执行其主体;而是返回函数的迭代器对象。当调用迭代器的next()方法时,将执行生成器函数体,直到第一个yield表达式出现,该表达式指定要从迭代器返回的值

例如:

function* idMaker() {
  var index = 0;
  while (index < 3)
    yield index++;
}

var gen = idMaker();

console.log(gen.next().value); // 0
console.log(gen.next().value); // 1
console.log(gen.next().value); // 2
console.log(gen.next().value); // undefined
函数*idMaker(){
var指数=0;
而(指数<3)
产量指数++;
}
var gen=idMaker();
console.log(gen.next().value);//0
console.log(gen.next().value);//1.
console.log(gen.next().value);//2.
console.log(gen.next().value);//未定义

您可能正在谈论发电机:

> function* x() { yield 1; yield 2; yield 3; return 4; }
undefined
> var g = x();
undefined
> g.next();
{ value: 1, done: false }
> g.next();
{ value: 2, done: false }
> g.next();
{ value: 3, done: false }
> g.next();
{ value: 4, done: true }
> g.next();
{ value: undefined, done: true }
见:

生成器可以用于异步操作,当生成器生成承诺而不是它希望返回的值时,它自己希望通过包装器(如
co
Bluebird.coroutine
)将这些承诺的解析值注入
yield
语句的返回值中见:

这是新版本JavaScript中新的
async
await
关键字的基础:


您可能正在谈论发电机:

> function* x() { yield 1; yield 2; yield 3; return 4; }
undefined
> var g = x();
undefined
> g.next();
{ value: 1, done: false }
> g.next();
{ value: 2, done: false }
> g.next();
{ value: 3, done: false }
> g.next();
{ value: 4, done: true }
> g.next();
{ value: undefined, done: true }
见:

生成器可以用于异步操作,当生成器生成承诺而不是它希望返回的值时,它自己希望通过包装器(如
co
Bluebird.coroutine
)将这些承诺的解析值注入
yield
语句的返回值中见:

这是新版本JavaScript中新的
async
await
关键字的基础:


您可能正在谈论es6发电机。每次调用yield指令时,生成器返回并“暂停”,并且在下次调用functionPerfect时从上次yield再次调用它!我希望你能给出答案而不是评论。LolYeah没关系,我不是一个抢名声的人;)很高兴你找到了你想要的你可能在谈论es6发电机。每次调用yield指令时,生成器返回并“暂停”,并且在下次调用functionPerfect时从上次yield再次调用它!我希望你能给出答案而不是评论。LolYeah没关系,我不是一个抢名声的人;)很高兴你找到了你想要的真棒。谢谢我会在7分钟内接受答案。太棒了。谢谢我会在7分钟内接受答案。