- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我们正在 Ubuntu 服务器上使用 chokidar 和 nodejs 监视文件更改。它工作得很好,但有时我认为我们在更改文件时的保存方式有问题:在 chokidar 中触发了“onchange”事件,但是当我们在回调中读取文件时,它是空的或(很少)没有写完整。我们不知道这是由文本编辑器编写文件、客户端计算机上的操作系统、服务器上的操作系统或文件系统(ext4)引起的问题,还是 chokidar 中的某种错误。
这个空文件问题现在几乎每次都发生在一台使用 sublime 3 的计算机(mac,最新的 osx 版本)上进行的文件更改。在 sublime 中我们尝试了设置“atomic_save”(创建一个临时文件然后覆盖原始文件),但它并没有解决我们的问题:
我们之前在使用 phpstorm 时遇到过这个问题,但是在切换到'使用“安全写入”(首先将更改保存到临时文件)'之后 - 所以与 sublime 中的 atomic_save 设置相同,这也是为什么我们在 sublime 中尝试 atomic_save - onchange 事件在完成写入后正确触发。
所以我们的问题是,当文件以某种方式完全写入时(在 chokidar 中,在操作系统中,在 sublime 中),是否有一种方法可以触发“onchange”?或者我们是否必须在“onchange”事件中检查文件大小,直到一段时间没有改变(不太好)?或者我们的问题可能是由于其他原因导致的?
我们将不胜感激任何提示!提前致谢!
最佳答案
浏览 performance chokidar
自述文件部分,我发现了以下内容:
awaitWriteFinish
(default:false
). By default, the add event will fire when a file first appear on disk, before the entire file has been written. Furthermore, in some cases somechange
events will be emitted while the file is being written. In some cases, especially when watching for large files there will be a need to wait for the write operation to finish before responding to a file creation or modification. SettingawaitWriteFinish
totrue
(or a truthy value) will poll file size, holding itsadd
andchange
events until the size does not change for a configurable amount of time. The appropriate duration setting is heavily dependent on the OS and hardware. For accurate detection this parameter should be relatively high, making file watching much less responsive. Use with caution.
options.awaitWriteFinish
can be set to an object in order to adjust timing params:
awaitWriteFinish.stabilityThreshold
(default:2000
). Amount of time in milliseconds for a file size to remain constant before emitting its event.awaitWriteFinish.pollInterval
(default:100
). File size polling interval.
这看起来可以解决您的问题,假设文件保存之间的时间间隔超过几秒钟。
关于node.js - 乔基达尔 : onchange event for a file is possibly triggered to fast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34750158/
当我构建 2 个下拉菜单并从数据库中填充它们时,当从第一个下拉菜单中选取一个值时,会创建第二个下拉菜单。但是,当我在第二个选项中选择一个选项时,我的 ajax 正在执行。但是当我在第二个下拉列表中只有
所以我有一个用户脚本来解析页面并创建一个选择框并用选项填充它。 现在我想在用户更改选择框上的选定索引时调用脚本。不幸的是,用户脚本看起来只运行一次,并且无法读取选择上的 future 更改。 我试过:
我有一个文件选择器,当点击按钮时,文件选择器出现: 现在我想使用另一个按钮来执行此操作,触发上面的输入: { var element = document.getElementById('
有两种方法可以在 React 应用程序中获取输入更改。 一种是使用 另一个是 ... 什么时候应该使用第一个,什么时候应该使用另一个。 最佳答案 之所以有两种方式,是因为方式不止这两种。您
当子组件的 select 元素更改时,我尝试做两件事 - 更新子状态(用于显示更多字段以及其他特定于子项的决策等), 调用传入 props 的父处理程序。 只有第一个可以工作,如何添加第二个?正确的方
我创建了一个显示用户输入结果的自定义搜索应用程序。在应用程序中,我为用户提供了一种控制显示的结果数量的方法。 HTML 10 25 50 100 jQuery $(
我有一个带有多个选项的选择元素,如下所示: .. .... .. 我正在使用 django (不知道这是否真的很重要..)并且在 select 标记的 onChange 事件中我应
我有一个使用的 xsl 页面 在 onchange 事件中 onchange="updateDropdown({$pos});someElement_{$pos}.value = {$pos}";
我试图根据条件清除 onChange 事件中选择的值。它是否已经存在于选定的列表中。但是我无法使用 清除该值$select[name][0].selectize.clear(); 来自 onChang
我正忙于自学 FXML。我通过关注 this 来做到这一点示例。 这是一个简单的文本编辑器。但是,在本教程中,一切都是 Java 代码。 我自己正在使用 FXML 来分离逻辑 View 。 我目前
我在jsp页面中有如下代码... 如果我在 a4j 中使用 event="onchange" 它不会调用我的 generatePrescriptionQuantity 但如果我使用 event
我的页面上有一堆输入元素。每个输入元素都有一个 onchange 事件,该事件会触发对服务器的 ajax 调用。我想禁用所有这些 onchanges,然后对元素进行一些编程更改(重置它们),然后重新启
我有这个代码: $(document).ready(function(){ var country; $('#selectCountry').on('change', function (e)
我有这段代码: 但它并没有按照我想要的方式运行。当我离开盒子时它会运行该函数,我想每次该输入字段的内容发生变化时都执行该操作,我该怎么做? (我正在尝试为用户输入创建一个建议框)。 我也尝试过 jq
我有一个绑定(bind)到更改事件的选择,以便在进行选择时将用户带到新页面。鼠标没问题,但是当我尝试使用键盘的箭头键进行选择时,更改事件会在我按下箭头时立即触发,而不是等待我跳出,所以我只能选择第一个
所以我已经为此工作了大约一天......我有一个表单,其中有一个选择菜单,其选择会触发另一个相关的选择菜单。 此时我要做的是根据第二个选择菜单中的选择填写一个默认值。基本上,如果用户在 Labor 菜
我在 jQuery 中有一个 input text 我想知道是否可以获取该 input text 的值(type=number和 type=text) 在 onchange 发生之前,并且在 onch
简介我在 create-react-app 应用程序中有一个用户输入元素。它允许用户键入数字,或使用箭头向上或向下递增数字。然后输出显示该数字。 问题用户想要达到某个数字,无论他们如何输入数字,都会有
这个问题已经有答案了: val() doesn't trigger change() in jQuery (11 个回答) 已关闭 7 年前。 我有一个选择列表。 Toyota Subaru Fia
所以我的工作场所在一个组件内使用一个 SelectField,该组件在多个地方使用。说得通。现在,当我在当前正在开发的组件中使用该组件时。我创建的 onChange 事件未传递正确完成所需的值。现在,
我是一名优秀的程序员,十分优秀!