javascript - Node 回调数组未定义(空值)

标签 javascript arrays node.js

我使用 Node js 每隔几秒将来自观察者的数据传递给在数组中存储 id.ts 文件名的函数 Streamplay,这在存储时工作正常,但是当我从程序中的另一个函数回调时,我从该数组中得到未定义的值......并且我无法弄清楚需要如何编写它:

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]);
   }
}

并从 Node 中的主函数调用,如下所示:

 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 中的 else 条件。这一行是 return callback(stream_play[id]); 并且 stream_play 数组已初始化,但为空。访问 JavaScript 数组中不存在的元素将返回 undefined

关于javascript - Node 回调数组未定义(空值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46448799/

相关文章:

使用 & 和不使用 & 的 C 3d 数组指针衰减

javascript - 无限期地重复异步函数,无需递归/Promise

javascript - 通过点击 "Enter"从 textarea 提交数据

javascript - 输入类型 ="file"上的取消事件

c - 访问 C 中列表中的结构成员

java - 我可以在 Java 中初始化二维数组的数组/数组列表<int>吗?

javascript - 使用 Base64 图像时 Canvas.ToDataUrl 存在安全违规

javascript - Setinterval 在 Clearinterval JS 之后重叠

node.js - mongoose ODM 是否允许您轻松保存关联的双方?

node.js - 在 Node.JS 中,从大型对象而不是硬盘驱动器提供文件有什么优势吗?