2015-05-04 51 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) 
     });