Javascript 承诺的重新定义

Javascript 承诺的重新定义,javascript,ecmascript-6,bluebird,es6-promise,Javascript,Ecmascript 6,Bluebird,Es6 Promise,Promise现在是es6中的一个全局保留字,Linter抛出一个错误。那么这样做的陷阱是什么呢 var Promise = require("bluebird"); 或者我该怎么做 var BluebirdPromise = require("bluebird"); 看起来,只要不是全球性的,重新定义承诺就没有问题。但第二种方法更好 我们很多人都这样做。没问题。你只是用了一个更快的 实施,仅此而已。但请注意,您可能会使用越来越多的 各种图书馆的承诺,所以这是一个非常有限的 替换(在节点世界

Promise现在是es6中的一个全局保留字,Linter抛出一个错误。那么这样做的陷阱是什么呢

var Promise = require("bluebird");
或者我该怎么做

var BluebirdPromise = require("bluebird");

看起来,只要不是全球性的,重新定义承诺就没有问题。但第二种方法更好


我们很多人都这样做。没问题。你只是用了一个更快的 实施,仅此而已。但请注意,您可能会使用越来越多的 各种图书馆的承诺,所以这是一个非常有限的 替换(在节点世界中有关于 将库定义为全球承诺提供商)。——丹尼斯·塞格雷特


只需将这些行放入
.jshintrc

{
  "undef": true,
  "unused": true,
  "predef": [ "-Promise" ]
}

我们很多人都这样做。没问题。您只是在使用更快的实现,仅此而已。但是请注意,您可能会使用各种库提供的越来越多的承诺,因此这是一个非常有限的替代方案(在节点世界中有关于如何将库定义为全局承诺提供者的讨论)。从模块的方法来看,这并不重要,因为除非您明确地这样做,否则您不会覆盖全局值:
global.Promise=
Promise
不是保留字。主要的缺点是,如果您使用
Promise
而忘记了
要求它,那么您将使用全局值而不是蓝鸟。我通常推荐
var Bluebird=require('Bluebird')@aWebDeveloper这不是一个好主意。对于标识符来说,这是一个糟糕的选择,因为它会导致混乱和歧义,但这并不违法。{“predef”:[“-Promise”]}为我做了这项工作:)