2016-06-08 1 views
19

Я хочу использовать bluebird реализация Promise/A+ открытого стандарта и переопределить native ES6 Promises. Я также хочу, чтобы реализация bluebird была доступна везде в моих импортированных впоследствии модулях без необходимости требовать ее в каждом из них. Getting started страница Bluebird рассказывает мне:Могу ли я переопределить обещание ES6 по реализации bluebird в глобальной области узла?

var Promise = require("bluebird"); 

, что приводит к перекрывая родной элемент Promise. Поскольку bluebird является надмножеством спецификации, он не нарушит существующий код и, следовательно, должен быть безопасен в использовании.

Однако, потому что я знаю, что это считается плохой практикой:

  1. продлить или заменить язык туземцев и
  2. определяют глобалам для использования в требующих цепи, которая зависит от него

, Я опасаюсь, когда хочу включить это в базовый сценарий приложения-узла:

import Promise from 'bluebird'; 
global.Promise = Promise; 

Это плохая практика? Должен ли я придерживаться импорта bluebird в каждый отдельный файл?

+1

Просто потому, что мне интересно: почему вы хотите переопределить реализацию Promise? –

+1

Как правило, более быстрые, безопасные, лучшие ошибки и невероятно полезные надстройки API. Проверьте их: http://bluebirdjs.com/docs/why-bluebird.html http://bluebirdjs.com/docs/api-reference.html –

+1

> * Я также хочу, чтобы реализация bluebird была доступна везде в моем последующем импортированных модулей без необходимости требовать их в каждом из них *. Зачем? 'var Promise = require (" bluebird ");' явно, ясно, самодокументируется, а не магия. –

ответ

14

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

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

я

const Promise = require("bluebird"); 

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

+0

Я получаю сообщение от jsHint, говоря «Переопределение обещания», любые идеи, как обойти эту ошибку? – kamal0808

+0

@ kamal0808 этот вопрос github относится к вашей проблеме широко https://github.com/jshint/jshint/issues/1747 –

 Смежные вопросы

  • Нет связанных вопросов^_^