如何正确绑定?

时间:2018-11-26 22:53:39

标签: node.js module console singleton

有一个模块。它是记录器。它使用标签来显示消息的来源。像这样:

require('mymodule')('tag');

其代码如下:

let place = null;

const l = function (text) {
  process.stdout.write(place + text);
}

module.exports = function (where) {
 place = where;
 return l;
}    

然后我需要一些功能。我需要将一条消息始终保留在控制台的底部。因此,我创建了一个类似l.hold('my_message')的函数。 它会覆盖发送到“ l”的所有输出,并始终将消息保留在底部。 它工作得很好。但是仅当仅从一个文件调用此模块时。但是,当我从其他文件(当然使用不同的标签)使用此模块时,l.hold仅覆盖调用该文件的文件的输出,而不覆盖其他文件的输出。据我了解,发生这种情况是因为创建了模块的不同实例,每个文件调用一个实例。 而且,我想我需要使用类似单例的东西。我做了类似

module.exports = {
  tag (place) {
    function logger (...text) {
      l(place, ...text);
    }
   logger.error = l.error.bind(null, place);
   logger.debug = l.debug.bind(null, place);
   logger.info = l.info.bind(null, place);
   logger.warn = l.warn.bind(null, place);
   logger.hold = l.hold;
   logger.stop = l.stop;

   return logger;
 }
}

但是它没有提供所需的结果。那么该怎么办?任何帮助将不胜感激。提前谢谢。

0 个答案:

没有答案