Tôi đang cố gắng trả về đầu ra của hàm này dưới dạng một chuỗi, nhưng nó tiếp tục trả về dưới dạng không xác định. Tôi làm sai ở đâu?Node.js: Viết một hàm để trả về stawn xuất hiện dưới dạng chuỗi
function run(cmd){
var spawn = require('child_process').spawn;
var command = spawn(cmd);
var result = '';
command.stdout.on('data', function(data) {
result += data.toString();
});
command.on('close', function(code) {
return result;
});
}
console.log(run('ls'));
Cảm ơn! Làm thế nào tôi sẽ thay đổi nó để có chức năng đầu ra cho một biến thay vì console.log? –
Bạn nên làm bất cứ điều gì bạn phải làm với kết quả lệnh trong chức năng gọi lại, chỉ cần thay thế console.log bằng mã thực. Tất cả mọi thứ là không đồng bộ, vì vậy ngay cả khi bạn cố gắng đặt giá trị kết quả trong một biến toàn cục, bạn không thể biết khi nào nó sẽ có sẵn. Nếu bạn thực sự muốn làm điều gì đó theo cách không đồng bộ, điều này có thể giúp: https://github.com/caolan/async#series. Nhưng hãy tự hỏi tại sao bạn muốn làm điều đó. – fuwaneko
Waaaah Tôi rất ngớ ngẩn. Đã giải quyết lời hứa của tôi trên 'child.stdout.on ('dữ liệu', dữ liệu)' và tự hỏi tại sao đầu ra của tôi không hoàn chỉnh và được cắt ngắn ngẫu nhiên. Nếu bạn gặp phải sự cố đó, hãy lưu trữ dữ liệu vào một biến đầu tiên được giải quyết/bị từ chối bên trong sự kiện 'child.on ('close')' như trong câu trả lời này. Cảm ơn @ fuwaneko – GrayedFox