Node.js Nodejs Childexec对文件中的每一行执行命令,但在运行下一行之前,请等待第一个命令退出
我使用nodejs与我制作的casperjs脚本进行通信。 首先,我将告诉您我的Casperjs脚本的功能。 我已经用命令行输入设置了它。 我运行这个命令Node.js Nodejs Childexec对文件中的每一行执行命令,但在运行下一行之前,请等待第一个命令退出,node.js,wait,exit,readline,child-process,Node.js,Wait,Exit,Readline,Child Process,我使用nodejs与我制作的casperjs脚本进行通信。 首先,我将告诉您我的Casperjs脚本的功能。 我已经用命令行输入设置了它。 我运行这个命令 casperjs script.js "Inputdata1" "inputdata2" 然后,该脚本执行并访问我的一个服务器,提交输入数据1和2 然后等待服务器响应,并在10个文本文件中的一个文本文件上设置一行权限 根据脚本从我的服务器获得的结果 然后退出。这个casperjs脚本工作正常,没有问题 现在我正在构建一个nodejs脚本来反
casperjs script.js "Inputdata1" "inputdata2"
然后,该脚本执行并访问我的一个服务器,提交输入数据1和2
然后等待服务器响应,并在10个文本文件中的一个文本文件上设置一行权限
根据脚本从我的服务器获得的结果
然后退出。这个casperjs脚本工作正常,没有问题
现在我正在构建一个nodejs脚本来反复运行casperjs脚本
假设我的nodejs脚本使用readline.js读取一个文本文件,然后使用其中的数据为每一行执行Casperjs命令
问题是我的脚本一次执行每一次,我从casperjs的文本文件中没有得到任何结果
我需要我的nodejs脚本来执行等待Casperjs退出的第一行
然后,也只有这样,才能转到下一行,并使用Casperjs执行该命令
我还需要实际的casperjs脚本正常工作
这是我的nodejs脚本——我已经在这几天尝试了不同的代码和不同的模块,但无法解决它,因此非常感谢任何帮助
var fs = require('fs'),
sleep = require('sleep'),
readline = require('readline');
var rd = readline.createInterface({
input: fs.createReadStream('file.txt'),
output: process.stdout,
terminal: false
});
rd.on('line', function(line) {
var exec = require('child_process').exec;
var child = exec('casperjs check.js ' + line );
child.on('close', function(code) {
console.log('closing code: ' + code);
});
});
您正在寻找顺序循环。也就是说,在上一步完成后执行下一步 困难来了,因为Node.js是异步的,而且很少有现成的顺序功能 有两种选择 递归回调 });
没有测试,因此您可能需要修复任何拼写错误。好的,我将在第一个缺少变量,第二个缺少变量的那一分钟内尝试对其进行排序,以便将第二个从var child=exec('casperjs check.js'+行)更改为;to var child=exec('casperjs check.js'+task);但不幸的是,它没有传递数据权限。感谢您的帮助,我将尝试在固定的异步示例中调试它们。虽然你说变量丢失了,但哪一个?现在全部排序bro,第一个表示child缺少变量Ctrl+F现在找不到任何
child
引用。不管怎样,很高兴听到你让它工作起来。谢谢兄弟:)很高兴现在只是清理一下casperjs脚本和我的项目就完成了#
var fs = require('fs'),
sleep = require('sleep'),
exec = require('child_process').exec,
readline = require('readline');
var rd = readline.createInterface({
input: fs.createReadStream('file.txt'),
output: process.stdout,
terminal: false
});
var lines = [];
rd.on('line', function(line) {
lines.push(line);
});
rd.on('end', function() {
var i=0;
if(i < lines.length) {
exec('casperjs check.js ' + lines[i], function execCallback(code) {
console.log('closing code: ' + code);
i++;
if(i < lines.length) exec('casperjs check.js ' + lines[i], execCallback);
});
}
});
var fs = require('fs'),
sleep = require('sleep'),
exec = require('child_process').exec,
async = require('async'),
readline = require('readline');
var rd = readline.createInterface({
input: fs.createReadStream('file.txt'),
output: process.stdout,
terminal: false
});
var q = async.queue(function (task, callback) {
var child = exec('casperjs check.js ' + task.line );
child.on('close', function(code) {
callback(code);
});
}, 1);
rd.on('line', function(line) {
q.push({line: line}, function (code) {
console.log('closing code: ' + code + line);
JSON.stringify();
});