AnA*_*ons 5 javascript asynchronous yield typescript
在以下代码中:
function so() {
console.log('inside the timer')
}
function* sogen() {
const callback = yield;
setTimeout(callback, 2000);
return 1;
}
function() {
var gen = sogen();
gen.next(so), gen.next(so);
}()Run Code Online (Sandbox Code Playgroud)
为什么我从未达到功能so?
在您的代码片段中,sogen不是常规函数,而是生成器,如*.
您可以调用生成器来获取基本上是一个迭代器,它可以通过该方法进行控制.next(),并且可以在每次遇到yield关键字时暂停其执行。
var it = sogen();
it.next();
Run Code Online (Sandbox Code Playgroud)
您在那里的分配 ( const callback = yield) 将通过后续的 .next() 调用来解决,例如:
it.next(function myCallback() { /* ... */ });
Run Code Online (Sandbox Code Playgroud)
然后生成器将继续运行,直到下一个函数yield或函数结束。