Ben*_*Ben 10 javascript reentrancy
我想提高我对reentrant一词的理解.
这个功能是可重入的吗?
function* foo() {
yield 1;
yield 2;
}
Run Code Online (Sandbox Code Playgroud)
还有这个?
function foo() {
return 1;
}
Run Code Online (Sandbox Code Playgroud)
还有这个?
var x = 0;
function foo() {
return x++;
}
Run Code Online (Sandbox Code Playgroud)
还有这个?
function foo() {
setTimeout(foo, 1000);
}
Run Code Online (Sandbox Code Playgroud)
reentrent函数是一个可以恢复执行的函数:
在计算中,计算机程序或子程序被称为可重入,如果它可以在执行过程中被中断,然后在其先前的调用完成执行之前再次安全地再次调用("重新输入").
在浏览器/节点JavaScript中,所有多处理都是协作的(没有中断或上下文切换).常规函数始终在JavaScript中运行完成.(1)
所以在你的情况下 - 唯一的reentrent函数是第一个,因为它没有运行它的代码完成,可以在以后恢复.
实际上 - 可以说生成器使用重复的语法在JavaScript中实现协作式多任务处理.在生成器之前,所有代码都运行完成
(1)或者它永远不会停止,但它永远不会中断.此外 - 在通用平台.有一些平台(如Rhino)打破了规则.它们非常罕见,并且不使用与浏览器/节点JS相同的并发执行模型.
归档时间: |
|
查看次数: |
1526 次 |
最近记录: |