为多个模块使用 promise 库

Using promise library for more than one module

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

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

如果您在加载其他模块的顶级 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);