如何使用 CasperJS 读取文件中的实时更改

How to read the real time changes in a file with CasperJS

我试图让我的 CasperJS 脚本读取外部 txt 文件 (abc.txt),并且 abc.txt 需要在 CasperJS 进程的中间创建。

(并且 abc.txt 必须使用 'curl' 为某些第三方 api 创建,所以我调用了一个子进程来更新旧的 abc.txt)。

但是abc.txt里面的信息好像一开始就被锁住了,不管我是改了信息还是删了整个文件都没关系

有没有人知道 CasperJS 是否可以更具交互性? 或者如果我需要更改整个脚本有什么建议吗?

(我是想从网站A得到一个问题,然后去网站B找到答案,然后在网站A提交答案)

var casper = require('casper').create();
var fs = require('fs');
var data = fs.read('abc.txt');

casper.start();

casper.wait(5000, function () {
  console.log('wait 5000 for editing the file');
});

casper.then(function (){
  console.log(data);
});

casper.run();

如果 data.txt 的内容在脚本执行期间发生变化,这不会对保存该文件内容副本的变量产生任何影响。字符串值和文件内容之间从来没有直接联系。

如果要刷新字符串内容,需要重新读取那个文件:

data = fs.read('abc.txt');

如果您需要等待文件的变化,那么您可以定期读取文件内容,看看它们是否同时发生了变化。这可以通过 casper.waitFor():

来完成
var casper = require('casper').create();
var fs = require('fs');
var data = fs.read('abc.txt');
var newData;

casper.start();
casper.waitFor(function _check(){
    newData = fs.read('abc.txt');
    return data !== newData;
});
casper.wait(1000); // additional wait to make sure that the file writing has finished
casper.then(function (){
    console.log(newData);
});
casper.run();