我试图学习如何避免此处What is the explicit promise construction antipattern and how do I avoid it?
中所述的反模式我从JSFiddle上的一些代码开始,但是没有输出我期望的结果。
function sum1(x){
return new Promise(resolve => x+1)
}
function sum2(x){
return sum1(x)
.then(x => x+1);
}
function sum3(x){
return sum2(x)
.then(x => x+1)
}
sum3(1)
.then(console.log);
我希望它能打印4
,但什么都不打印
答案 0 :(得分:2)
您需要使用Promise.resolve()
创建已解决的承诺:
function sum1(x){
return Promise.resolve(x+1)
}
function sum2(x){
return sum1(x)
.then(x => x+1);
}
function sum3(x){
return sum2(x)
.then(x => x+1)
}
sum3(1)
.then(console.log);
答案 1 :(得分:1)
您在sum1中做错了。 new Promise((resolve, reject) => {//code here})
以函数为参数
function sum1(x){
return new Promise((resolve) => {
resolve(x + 1);
})
}
function sum2(x){
return sum1(x)
.then(x => x+1);
}
function sum3(x){
return sum2(x)
.then(x => x+1)
}
sum3(1)
.then(res => console.log(res));