Javascript 承诺不是构造器

Javascript 承诺不是构造器,javascript,promise,Javascript,Promise,我试图使用一个promise,但得到一个类型错误:promise不是构造函数 承诺如下: var Promise = new Promise( function (resolve,error) { for (var key in excludeValues) { /* some ifs */ minVal = someValue

我试图使用一个promise,但得到一个类型错误:promise不是构造函数

承诺如下:

        var Promise = new Promise(
            function (resolve,error) {
                for (var key in excludeValues) {
                   /* some ifs */
                    minVal = someValue 
                    ........
                    ........
                    }


                resolve(errors)
            });
            Promise.then(
            function(data){
                if (minVal > maxVal)
                {
                    errors.minMax.push(
                        'minMax'
                    )
                }

                if (gapVal > minVal * -1)
                {
                    errors.minMax.push(
                        'gapVal'
                    )
                }
                return (errors.minMax.length == 0 && errors.zahl.length == 0 && errors.hoch.length == 0 && errors.niedrig.length == 0)
            }
        );

有人能告诉我我做错了什么吗?

问题是您正在覆盖Promise函数,所以当您第二次执行代码时,“Promise”不再是函数

因此,如下图所示更改变量名

var promisevariable = new Promise(
        function (resolve,error) {
            for (var key in excludeValues) {
               /* some ifs */
                minVal = someValue 
                ........
                ........
                }


            resolve(errors)
        });

使用
var Promise
可以在范围中声明一个局部变量。它是用
未定义
和全局
承诺
构造函数初始化的。使用不同的变量名

var promise = new Promise(…);
promise.then(…);
或者根本没有

new Promise(…).then(…);

我有一个非常类似的问题,它给出了几乎相同的错误消息。我宣布:

var promise=newpromise(…)
而不是
newpromise(…)

该错误将给出非常类似的错误消息,如下所示:

promise不是构造函数(注意小写的
promise


在本例中,错误是因为您正在引用已声明的变量(
promise
),而不是调用
promise
构造函数。

尝试将同一事物命名为另一事物似乎是个坏主意。