如何在不全局修改 fs 的情况下执行 Promise.promisfyAll(fs)(在编写库时)?
How to do Promise.promisfyAll(fs) without globally modifying fs (when writing a library)?
AFAICT,如果我正在编写一个库并使用 Promise.promisifyAll(fs);
,这会修改 fs
模块(而不是返回修改后的副本)。因此,如果有人导入我的库,这也会为他们修改 fs
的副作用。
有没有办法避免这种情况?
您可以为不想更改的全局使用包装器对象:
var Promise = require('bluebird');
var fs = Promise.promisifyAll(function(orig) {
var myFs = {};
for (var m in orig)
myFs[m] = orig[m]; // .bind(orig); is probably unnecessary
return myFs;
}(require('fs')));
AFAICT,如果我正在编写一个库并使用 Promise.promisifyAll(fs);
,这会修改 fs
模块(而不是返回修改后的副本)。因此,如果有人导入我的库,这也会为他们修改 fs
的副作用。
有没有办法避免这种情况?
您可以为不想更改的全局使用包装器对象:
var Promise = require('bluebird');
var fs = Promise.promisifyAll(function(orig) {
var myFs = {};
for (var m in orig)
myFs[m] = orig[m]; // .bind(orig); is probably unnecessary
return myFs;
}(require('fs')));