尝试编写承诺时出错:Promise resolver对象不是函数

时间:2016-04-22 09:19:16

标签: javascript reactjs

当我写这个承诺时,有人能告诉我我做错了什么吗?我希望计算中的第一个函数执行,然后在计算完成后再调整组件的setState。

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

2 个答案:

答案 0 :(得分:4)

因为你正在传递对象但是期望功能

它应该是这样的

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

答案 1 :(得分:2)

在您的代码中

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

无法访问newSubtotal,newTotal。

怎么样?

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

另外,添加:reject(someFailCase);