我可以通过在节点的全局范围内执行蓝鸟来覆盖ES6的承诺吗?
我想使用蓝鸟的Promise / A +开放标准的实现,并重写本地ES6 Promise 。 我还希望bluebird实现在随后导入的模块中随处可用,而不必在每个模块中都要求。 蓝鸟的入门页面告诉我:
var Promise = require("bluebird");
,这导致覆盖原生的Promise元素。 因为蓝鸟是规范的超集,它不会破坏现有的代码,因此应该是安全的使用。
但是,因为我知道这被认为是不好的做法:
- 扩展或取代原生语言,和
- 定义全局variables,以便在依赖于它的需求链中使用
,当我想将其包含在节点应用程序的基本脚本中时,我很谨慎:
import Promise from 'bluebird'; global.Promise = Promise;
这是不好的做法? 我应该坚持在每一个文件中导入蓝鸟吗?
在过去的四年中,我在代码中已经完成了数百次,所以在每月1000万次的下载中有很多其他代码。
官方支持将本地实现与蓝鸟交换。
我做
const Promise = require("bluebird");
以每个文件为基础。 请注意,通常您可以将API提供一次,然后避免调用Promise
– 最多调用.resolve
。