Нужно ли Promise.promisifyAll () в каждом файле модуля?

1

Если мне нужно 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

Итак, моя теория правильная, а вторая быстрее

Теги:
promise
bluebird

1 ответ

1
Лучший ответ

В вашем первом решении, обещающая версия fs будет генерироваться каждый раз, когда вам это нужно. Но в вашем втором решении promisify будет происходить только один раз, когда модуль загружается в память, а затем каждый раз, когда вы его используете, вы просто указываете на тот же объект.

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



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

Оба решения будут работать, я думаю, вы должны оценить эффективность использования того или другого.

  • 0
    Я попытался с 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 Так что вторая быстрее. Спасибо за вашу помощь ;)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню