2016-04-22 20 views
1

有人能告诉我我在写这个承诺时做错了什么吗?我想要计算中的第一个函数执行,然后在计算完成后再setState。尝试编写承诺时出现错误:Promise解析器对象不是函数

var calculate = new Promise({ 

      function(resolve, reject) { 
       var newSubtotal = 0; 
       var newTotal = 0; 

       this.props.cart.map((product)=>{ 

        newSubtotal += product.price; 
        newTotal += product.price; 
        newTotal *= 1.10; 

       }); 
       resolve(newSubtotal, newTotal); 
      } 
     }); 

     calculate.then(() => { 
      this.setState({ 
       subtotal: newSubtotal, 
       total: newTotal 
      }); 
     }); 

回答

3

因为你逝去的对象,但功能预计

它应该是这样的

var calculate = new Promise(function(resolve, reject){ 
// some stuff 
}) 
1

在你的代码

calculate.then(() => { 
     this.setState({ 
      subtotal: newSubtotal, 
      total: newTotal 
     }); 
    }); 

有newSubtotal,newTotal进不去。

怎么样?

calculate.then((newSubtotal, newTotal) => { 
     this.setState({ 
      subtotal: newSubtotal, 
      total: newTotal 
     }); 
    }); 

此外,添加:reject(someFailCase);

相关问题