Могу ли я переопределить ES6 Promise реализацией bluebird в глобальной области node?
Я хочу использовать bluebird реализацию Promise/A + открыть стандарт и переопределить родной ES6 Promises. Я также хочу, чтобы реализация bluebird была доступна везде в моих импортированных впоследствии модулях без необходимости требовать ее в каждом из них. Bluebird Начало работы сообщает мне:
var Promise = require("bluebird");
что приводит к переопределению собственного элемента Promise. Поскольку bluebird является надмножеством спецификации, он не нарушит существующий код и, следовательно, должен быть безопасным в использовании.
Однако, поскольку я знаю, что он считает неправильную практику:
- расширять или заменять языковые уроженцы и
- определить глобальные переменные для использования в цепочке, которая зависит от нее.
я опасаюсь, когда хочу включить это в базу script приложения node:
import Promise from 'bluebird';
global.Promise = Promise;
Это плохая практика? Должен ли я придерживаться импорта bluebird в каждом отдельном файле?
Ответы
Ответ 1
Я делал это сотни раз в моем коде за последние 4 года, и поэтому у меня много других среди 10 миллионов ежемесячных загрузок.
Официально поддерживается замена собственной реализации с помощью bluebird.
Я делаю
const Promise = require("bluebird");
По каждому файлу. Обратите внимание, что обычно вы можете обещать свои API один раз, а затем вообще избегать вызова Promise
- вызов не более .resolve
.