JavaScript中的重传
Reentrancy in JavaScript
本文关键字:重传 JavaScript 更新时间:2023-09-26
我想提高对单词可重入的理解。
这个函数是可重入的吗?
function* foo() {
yield 1;
yield 2;
}
这个呢?
function foo() {
return 1;
}
这个呢?
var x = 0;
function foo() {
return x++;
}
这个呢?
function foo() {
setTimeout(foo, 1000);
}
可重入函数是一个可以恢复执行的函数:
在计算中,如果计算机程序或子例程在执行过程中被中断,然后在其先前的调用完成执行之前被安全地再次调用("重新中心"),则称为可重入程序。
在浏览器/节点JavaScript中,所有多处理都是协作的(没有中断或上下文切换)一个正则函数总是在JavaScript中运行到完成(1)
因此,在您的情况下,唯一可重入的函数是第一个,因为它不会完全运行代码,并且可以在稍后恢复。
- 第二个函数只是一个正则函数
- 第三个使用了一个外部作用域,这有点类似,因为它允许函数保持某种状态。但这不一样,因为功能无法恢复
- 第四个只是立即运行到完成(它会安排另一次调用它——但这取决于平台,而不是JavaScript)
事实上,可以说生成器使用可重入语法在JavaScript中实现了协作多任务处理。在生成器之前,所有代码都已运行完成。
(1)或者它从未停止,但它从未中断。同样-在通用平台中。有些平台(如Rhino)违反了规则。它们非常罕见,并且不使用与浏览器/节点JS相同的并发执行模型
相关文章:
- 数组上的多图像上传-Javascript/Jquery
- 使用Ajax上传Javascript表单
- 重定向javascript中的Url
- 带有预览和删除选项的图像上传-Javascript/Jquery
- 从Ajax脚本重定向Javascript页面
- JSnice如何进行统计重命名,重命名Javascript变量
- 重定向Javascript中包含的URL路径
- Appending Child重置JavaScript上先前附加的元素值
- 重定向javascript,替换url
- 点击上传javascript/jquery之前显示图像
- 只需要重置Javascript数组的索引
- 上传JavaScript代码包前后的站点性能差异
- 重置 JavaScript 函数
- 使用 PHP 重命名 JavaScript 变量和函数
- 如何在刷新页面时停止重置 JavaScript 计时器
- 重置 Javascript 对象中所有值的最佳方法
- Typescript 编译器错误重命名 JavaScript 文件
- 计时器上的事件,每次击键后重置?Javascript
- 重命名 JavaScript 数组中的键
- JavaScript中的重传