nodejs 怎么释放 回调函数 闭包,一个子进程里面生成了事件回调函数,怎么清除这个子进程
一个子进程里面生成了事件回调函数,怎么清除这个子进程
const spawn = require('child_process').spawn;
var express = require('express');
var router = express.Router();
var player;
var music=[
'/home/pi/Music/city.mp3',
'/home/pi/Music/road.mp3',
'/home/pi/Music/student.mp3'
];
function Playmusic(str){
if(player!=null)
{
player.kill('SIGHUP');
player=null; //这样能释放闭包数据吗? 能清除 它附带生成的 player.stdout.on player.stderr.on 。。。
console.log('kill process');
}
player= spawn('mplayer', [str]); //这个是赋值 还是引用
player.stdout.on('data', (data) => {
//console.log(`输出:${data}`);
});
player.stderr.on('data', (data) => {
console.log(`错误:${data}`);
});
player.on('close', (code) => {
console.log(`子进程退出码:${code}`);
//player=null;
});
}
var musiccnt=0
router.get('/', function(req, res, next) {
console.log('music play');
Playmusic(music[musiccnt%music.length]);++musiccnt;
res.end('music');
});
module.exports = {
router:router,
playmusic:Playmusic
};