Если мне нужно fs в нескольких файлах с Promise (Bluebird), я должен звонить каждый раз Promise.promisifyAll(require ('fs'))? Или было бы лучше с небольшим модулем с
module.exports = Promise.promisifyAll(require('fs'))
и только импортировать этот модуль?
Если я получу это правильно, мой первый выбор будет каждый раз демонстрировать модуль fs, а второй будет привязан только к тому же модулю, который только один раз будет оправданным. Или мой первый выбор будет делать то же самое, что и мой второй?
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
Итак, моя теория правильная, а вторая быстрее
В вашем первом решении, обещающая версия fs будет генерироваться каждый раз, когда вам это нужно. Но в вашем втором решении promisify будет происходить только один раз, когда модуль загружается в память, а затем каждый раз, когда вы его используете, вы просто указываете на тот же объект.
// file fs-promise.js
module.exports = Promise.promisifyAll(require('fs'));
// other file
const fsp = require('./fs-promise.js');
Оба решения будут работать, я думаю, вы должны оценить эффективность использования того или другого.
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 Так что вторая быстрее. Спасибо за вашу помощь ;)