Подтвердить что ты не робот

Могу ли я переопределить 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 в каждом отдельном файле?

4b9b3361

Ответ 1

Я делал это сотни раз в моем коде за последние 4 года, и поэтому у меня много других среди 10 миллионов ежемесячных загрузок.

Официально поддерживается замена собственной реализации с помощью bluebird.

Я делаю

const Promise = require("bluebird");

По каждому файлу. Обратите внимание, что обычно вы можете обещать свои API один раз, а затем вообще избегать вызова Promise - вызов не более .resolve.