我不知道为什么这里有一个console.log的模块被多次调用。我以为这是单件。
因此,如果我将这个模块导入到其他模块中,因为这是一个单例,所以我没想到console.log在第一次被模块导入时会调用每个time...only,但在此之后,我认为即使是由后续模块导入,因为它是单个模块,我也不会看到大量这样的日志记录:
src/graphql/db/InMemory/InMemoryDB.ts
console.log('inMemoryDB');
const inMemoryDb = newDb();
inMemoryDb.public.none(fs.readFileSync('001-initial.sql', 'utf8'));
export default inMemoryDb;当我运行最初运行的测试时,我看到的是或最初使用这个单例启动服务时看到的是6-7 inMemoryDB正在被记录。即使在我把它改成这个之后,同样的交易:
const inMemoryDb = () => {
console.log('inMemoryDB');
return newDb();
}
inMemoryDb.public.none(fs.readFileSync('001-initial.sql', 'utf8'));
export default inMemoryDb();因此,例如,当我启动graphql服务时,当我运行console.logs时,我得到了6-7个这样的yarn graphql-dev
"graphql-dev": "yarn compile-graphql && yarn start-graphql-dev",
"compile-graphql": "tsc -b ./src/graphql",
"start-graphql-dev": "node --optimize_for_size --trace-warnings --es-module-specifier-resolution=node --no-warnings dist/graphql/server.js"在我的graphql代码中,它使用这样的内存中的DB单例(基于上面的第一个实现):
const inMemoryPgDb = inMemoryDb;发布于 2020-12-20 07:28:16
同意您的观点,即调用会发生,而console.log被调用,但是变量的值不会改变。请查看此示例以供参考
好的,为什么会有多个console.log?在上面的代码中,您将给出一个具有返回类型的函数实例,在任何引用模块函数的地方,它都会被调用。因为我们正在执行这个函数。
每个模块都是独立的JavaScript程序。它在执行时合并成一个程序。
https://stackoverflow.com/questions/65377457
复制相似问题