Node.js Nodejs Childexec对文件中的每一行执行命令,但在运行下一行之前,请等待第一个命令退出

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脚本来反

我使用nodejs与我制作的casperjs脚本进行通信。 首先,我将告诉您我的Casperjs脚本的功能。 我已经用命令行输入设置了它。 我运行这个命令

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();
});