从函数返回数组值以用于下一个函数

时间:2018-03-30 13:23:09

标签: arrays node.js function callback return

我有这个功能:

getSlaves: function() {
  fs.readFile('/etc/hosts', function(err, data) {
    var array = data.toString().split("\n");
    for(i in array) {
      if (array[i].indexOf('slave') > -1){
        var workerNo = array[i].slice(-1);
        var ip = array[i].split(" ");
        console.log(ip);
      }
    }
  });
}

目前它将此内容写入控制台:

[ '192.168.11.1', 'slave1' ]
[ '192.168.11.2', 'slave2' ]
[ '192.168.11.3', 'slave3' ]

我想要它返回,所以我可以在另一个函数中使用它。我已经尝试将return(ip)callback(ip)添加到方法中,但这不起作用。如何返回这些值,以便它们可以被其他函数使用?

1 个答案:

答案 0 :(得分:0)

您可以将ips数组传递给回调

function getSlaves(callback) {
    if (err) {
        callback(err);
    }
    else {
        fs.readFile('/etc/hosts', function (err, data) {
            var array = data.toString().split("\n");
            let data = [];//to store ips
            for (i in array) {
                if (array[i].indexOf('slave') > -1) {
                    var workerNo = array[i].slice(-1);
                    var ip = array[i].split(" ");
                    data.push(ip);
                }
            }
            callback(undefined, rarr);
        });
    }
}

如何访问数组

function yourFunc(){
    getSlaves((err,data)=>{
        if(err){
            console.log(err);
        }
        else{
            console.log(data);
        }
    });
}