如何在else语句javascript中使Promise resolve触发?

如何在else语句javascript中使Promise resolve触发?,javascript,promise,Javascript,Promise,正如您所看到的,它只打印console.log(“Testing”),而不在asyncCall 设i=0; 函数resolveAfter2Seconds(){ 返回新承诺(解决=>{ 设置超时(()=>{ 如果(i{ const resolveFn=解析; setTimeout(函数tick(){ 如果(i!=3){ i++; 控制台日志(i); 设置超时(勾号,1000); }否则{ resolveFn(“准备就绪!”); } }, 1000); }); } 异步函数asyncCall(){

正如您所看到的,它只打印
console.log(“Testing”)
,而不在
asyncCall

设i=0;
函数resolveAfter2Seconds(){
返回新承诺(解决=>{
设置超时(()=>{
如果(i<3){
控制台日志(“测试”);
resolveAfter2Seconds();
}否则{
决心(“准备好了!”);
}
i++;
}, 2000);
});
}
异步函数asyncCall(){
控制台日志(“调用”);
const result=等待resolveAfter2Seconds();
//预期输出:“已解决”
console.log(“等待结果”);
控制台日志(结果);
log(“发送数组”);
}
异步调用()我希望这有帮助

设i=0;
函数resolveAfter2Seconds(){
返回新承诺((解决、拒绝)=>{
const resolveFn=解析;
setTimeout(函数tick(){
如果(i!=3){
i++;
控制台日志(i);
设置超时(勾号,1000);
}否则{
resolveFn(“准备就绪!”);
}
}, 1000);
});
}
异步函数asyncCall(){
控制台日志(“调用”);
const result=等待resolveAfter2Seconds();
//预期输出:“已解决”
console.log(“等待结果”);
控制台日志(结果);
log(“发送数组”);
}
异步调用()我希望这有帮助

设i=0;
函数resolveAfter2Seconds(){
返回新承诺((解决、拒绝)=>{
const resolveFn=解析;
setTimeout(函数tick(){
如果(i!=3){
i++;
控制台日志(i);
设置超时(勾号,1000);
}否则{
resolveFn(“准备就绪!”);
}
}, 1000);
});
}
异步函数asyncCall(){
控制台日志(“调用”);
const result=等待resolveAfter2Seconds();
//预期输出:“已解决”
console.log(“等待结果”);
控制台日志(结果);
log(“发送数组”);
}

异步调用()你永远不会兑现你的第一个承诺。您只需递归调用该函数,并最终解决其中一个进一步的承诺,而不是顶级承诺。任何示例thx。因此,可能需要存储所有承诺并一次性解决所有问题吗?这将解决您的问题:
resolvefter2seconds()。然后(resolve),因为并非所有路径都指向承诺的解析。
如果(i<3){console.log(“Testing”);resolveAfter2Seconds()。那么(resolve);}
,您将看到。当您最终进入
else
一次时,您只能解决最重要的承诺(以及整个链条)。在那之前,你正在堆积等待的承诺,你会像多米诺骨牌一样一次性解决它们。你永远不会解决你做出的第一个承诺。您只需递归调用该函数,并最终解决其中一个进一步的承诺,而不是顶级承诺。任何示例thx。因此,可能需要存储所有承诺并一次性解决所有问题吗?这将解决您的问题:
resolvefter2seconds()。然后(resolve),因为并非所有路径都指向承诺的解析。
如果(i<3){console.log(“Testing”);resolveAfter2Seconds()。那么(resolve);}
,您将看到。当您最终进入
else
一次时,您只能解决最重要的承诺(以及整个链条)。在那之前,你正在堆积悬而未决的承诺,你会像多米诺骨牌一样一次性解决它们。