2015-05-04 21 views
2

我想使用承诺,但得到一个类型错误:承诺不是一个构造函数。承诺不是构造函数

这里的承诺:

 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) 
      } 
     ); 

谁能告诉我什么,我做错了什么?

+11

使用不同的变量名

var promise = new Promise(…); promise.then(…); 

或无Trying,作为另一件事似乎是一个坏主意来命名的东西同样的事情。 – epascarello

+0

谢谢@epascarello – baao

回答

4

随着var Promise你在你的范围内声明一个局部变量的变量名。它的初始化为undefinedshadows全球Promise的构造函数。在所有

new Promise(…).then(…); 
0

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

所以更改如下图所示

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


      resolve(errors) 
     });