2017-06-11 13 views
1

Promise(Bluebird)で複数のファイルにfsが必要な場合は、毎回Promise.promisifyAll(require( 'fs'))を呼び出す必要がありますか? それともすべてのモジュールファイルにPromise.promisifyAll()が必要ですか?

module.exports = Promise.promisifyAll(require('fs')) 

だけそのモジュールをインポートすると、小さなモジュールを搭載した方が良いだろうか?

もし私が正しいとすれば、私の最初の選択はいつもfsモジュールを約束し、2番目のモジュールは同じモジュールにのみリンクします。これは一度だけのことです。または、私の第二のように同じことをする私の最初の選択ですか? EDIT

const Promise = require('bluebird') 

let time1start = Date.now() 
for(let i = 0; i <= 1000;i++){ 
    let fs = Promise.promisifyAll(require('fs')) 
} 
console.log('Time gone 1 Test: ' + (Date.now() - time1start)) 

let time2start = Date.now() 
for(let i = 0; i <= 1000;i++){ 
    let fs = require('./testInc') 
} 
console.log('Time gone 2 Test: ' + (Date.now() - time2start)) 

testinc.js:

module.exports = require('bluebird').promisifyAll(require('fs')) 

結果は次のとおり 時間行っ1テスト:891 時間行っ2テスト:10 私は2つのオプションをテスト

私の理論は正しく、2番目は速いです。

答えて

1

最初の解決策では、必要なときにfsのpromisifyバージョンが生成されます。しかし、2番目のソリューションでは、promisifyはモジュールがメモリにロードされたときに1回だけ実行され、使用するたびに同じオブジェクトを指すようになります。

// file fs-promise.js 
module.exports = Promise.promisifyAll(require('fs')); 



// other file 
const fsp = require('./fs-promise.js'); 

両方の解決策がうまくいく、私はあなたがどちらかを使用してのパフォーマンスを評価する必要がありますと思う。 { せFS = Promise.promisifyAll

+0

私は 'CONSTプロミス=必要とする( 'ブルーバード') LETのtime1start = Date.now()のための (; iは= 1000 Defkil

関連する問題