i im使用节点js每隔几秒钟传递Watcher的数据来函数流播放存储ID.TS文件名的函数流中的fileNames在阵列中的效果很好,但是当我从我的另一个函数回调的时候,程序我从此数组中获得不确定的值。...我不知道如何编写它:
var stream_play = [];
watch('/tmp/1_.m3u8', function(event, name) {
/* DEFINE - variables */
var ts = [];
ts.push(1);
streamplay(id, ts[ts.length-1]);
});
function streamplay(id, ts, callback) {
/* CHECH - ts */
if (ts !== 0) {
console.log('adding id..'+id+'...with ts...'+ts)
stream_play[id] = ts;
} else {
return callback(stream_play[id]);
}
}
和这样的节点中的主函数呼叫:
streamplay(stream, 0, function(response) {
console.log('streaming ts file...'+response+'...to client...')
res.write(fs.readFileSync('/tmp/'+response));
})
我明白了:
streaming ts file...undefined...to client...
您的功能调用,streamplay(stream, 0, function(response) {
最终会陷入streamplay
中的其他条件。该行是return callback(stream_play[id]);
,stream_play
数组是初始化但空的。访问JavaScript数组中的不存在的元素返回undefined
。
我找到了解决方案和另一个问题...使用回调的第一个示例现在像魅力一样工作。问题在于我拥有主流程和工作过程,并且在节点JS网站上阅读了掌握和工作过程之间无法在变量值之间共享的网站...因此,新问题是如何共享主和工作的过程变量,以便我可以从所有人的所有工作过程变量值访问主?
我正在对此进行聚类,因为我的服务器负载巨大和CPU聚类必须进行。