Javascript 函数内的set interval必须返回resolve消息或reject

Javascript 函数内的set interval必须返回resolve消息或reject,javascript,Javascript,我试图制作一个计时器,并试图退出我正在编写的代码中发生的回调地狱,这是我所编写代码的一部分,问题是我没有收到承诺的反馈,因此没有解决消息,也没有拒绝消息。 有什么问题 var定时器=15; var startTimer=(计时器)=>{ 返回新承诺((解决、拒绝)=>{ 如果(解决){ 变量倒计时=设置间隔(()=>{ 控制台日志(计时器); 计时器--; 如果(计时器==0){ 清除间隔(倒计时); 返回“你是失败者”; } }, 1000); } 如果(拒绝){ 返回“对不起,出了问题!”

我试图制作一个计时器,并试图退出我正在编写的代码中发生的回调地狱,这是我所编写代码的一部分,问题是我没有收到承诺的反馈,因此没有解决消息,也没有拒绝消息。 有什么问题

var定时器=15;
var startTimer=(计时器)=>{
返回新承诺((解决、拒绝)=>{
如果(解决){
变量倒计时=设置间隔(()=>{
控制台日志(计时器);
计时器--;
如果(计时器==0){
清除间隔(倒计时);
返回“你是失败者”;
}
}, 1000);
}
如果(拒绝){
返回“对不起,出了问题!”;
}
})
}
起始计时器(计时器)
。然后(消息=>{
控制台日志(消息);
//信息应该是“你是失败者!”。
})
.catch(消息=>{
控制台日志(消息);

})
您使用的承诺是错误的,请查看此项

您可以解析或拒绝要返回的值

var定时器=15;
var startTimer=(计时器)=>{
返回新承诺((解决、拒绝)=>{
试一试{
变量倒计时=设置间隔(()=>{
控制台日志(计时器);
计时器--;
如果(计时器==0){
清除间隔(倒计时);
决心(“你是失败者”);
}
}, 1000);
}捕捉(错误){
拒绝(“对不起,出了问题!”);
}
})
}
起始计时器(计时器)
。然后(消息=>{
控制台日志(消息);
})
.catch(消息=>{
控制台日志(消息);

})
解析
拒绝
是要调用的函数
resolve
用于异步操作完成时,而
reject
用于错误发生时。当调用这些函数时,您可以提供一个值以沿着承诺链传播

var计数=5
var startTimer=(计数)=>{
返回新承诺((解决、拒绝)=>{
试一试{
var intervalId=setInterval(()=>{
如果(计数){
console.log(计数--)
返回
} 
clearInterval(有效期间)
决心(“你是失败者”)
}, 1000)
}抓住{
拒绝(“对不起,出了问题!”)
}
})
}
startTimer(计数)
.then((结果)=>{console.log(结果)})

.catch((err)=>{console.log(err)})
我认为您误解了承诺中的解决和拒绝的概念。我建议你试着读一下这篇文章,为什么要检查是否存在解析?这是一个永远存在的函数。我只想在计时器完成时执行其余的代码?你认为我以最好的方式实现了这项工作吗?有什么比我在这里做的更好?我在寻找摆脱地狱的方法。因为我回报了一个承诺,这是我做的好事吗?老实说,在这种情况下,你不需要任何承诺。你可以在不使用任何承诺的情况下实现同样的结果。我怎么能做到?内部if(timer==0){在这里我将编写所有剩余代码?}@jonas您提到的“回调地狱”已经通过使用
async
/
wait
解决了。您认为这是实现此目标的最佳方法吗?我的意思是退出回调地狱。承诺和异步/等待帮助您避免回调地狱。在我看来,这个例子没有错。