当我写这个承诺时,有人能告诉我我做错了什么吗?我希望计算中的第一个函数执行,然后在计算完成后再调整组件的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
});
});
答案 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);