我的节点js程序有几个不同的模块,文件系统模块(fs),我想使用bluebird功能,为此我需要使用以下代码,我的问题是,如果我需要在我的节点应用程序中执行一次,或者为每个文件执行此操作?
var Promise = require('bluebird');
var fs = Promise.promisifyAll(require('fs'));
答案 0 :(得分:0)
如果您在加载其他模块的顶级JS文件中执行此操作,则只需执行一次。
这是有效的,因为require()
的响应将由Node.js缓存,这意味着调用Promise.promisifyAll
将修改缓存的数据,随后在其他模块之间共享。
例如:
// a.js
var Promise = require('bluebird');
var fs = Promise.promisifyAll(require('fs'));
var b = require('./b');
// b.js
var fs = require('fs');
console.log('promisified?', 'readFileAsync' in fs);