/ / Node.JS - Valor de retorno do Node-PowerShell - node.js

Node.JS - Valor de retorno do Node-PowerShell - node.js

Eu estou usando um módulo node-powershell de https://www.npmjs.com/package/node-powershell.

var shell = require("node-powershell");
PS = new shell("echo "node-powershell is awesome"");
PS.on("output", function(data){
console.log(data);
});
PS.on("end", function(code) {
//optional callback
//Do Something
});

Eu estou tentando retornar dados de uma função e atribuí-lo a uma variável $ returneddata:

function getData()
{
var shell = require("node-powershell");
PS = new shell("echo "node-powershell is awesome"", {debugMsg: false});
PS.on("output", function(data){
return data;
});
PS.on("end", function(code) {

});

}

var $returneddata = getData();

Mas isso não é atribuído.

Respostas:

2 para resposta № 1

Você não está vendo os dados porque sua declaração de retorno está retornando para o chamador errado :) PS.on("output" ... está registrando uma função de retorno de chamada para um evento. A função fornecida será então chamada pelo emissor do evento quando o evento é gerado. Portanto, o valor retornado por esse retorno de chamada está, na verdade, sendo retornado ao emissor do evento, que não se preocupa com seu valor de retorno, em vez do chamador de getData.

Para corrigir o problema, você deve fornecer um retorno de chamada próprio, tente isto:

function getData(callback) {
var shell = require("node-powershell");
PS = new shell("echo "node-powershell is awesome"", {debugMsg: false});
PS.on("output", function(data){
return callback(null, data);
});
PS.on("end", function(code) {

});
}

getData(function onGetData(err, data) {
// do stuff with the returned data here
});

Como um aparte, você pode não precisar do err parâmetro, mas retornos de retorno com erro primeiro são a convenção no nó. Você deve provavelmente adicionar PS.on("error" ... se o módulo suportar isso ...