将promise库用于多个模块

时间:2015-07-14 18:59:30

标签: node.js bluebird

我的节点js程序有几个不同的模块,文件系统模块(fs),我想使用bluebird功能,为此我需要使用以下代码,我的问题是,如果我需要在我的节点应用程序中执行一次,或者为每个文件执行此操作?

var Promise = require('bluebird');
var fs = Promise.promisifyAll(require('fs'));

1 个答案:

答案 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);