Javascript 在if语句中处理异步承诺
我正在用javascript处理以下场景Javascript 在if语句中处理异步承诺,javascript,asynchronous,async-await,Javascript,Asynchronous,Async Await,我正在用javascript处理以下场景tt类似于包中的一个函数,如果某件事情没有发生,它将返回拒绝承诺。如果触发了拒绝承诺,我想布尔化test()函数中的wait tt()。当前设置会捕获错误,并且不会执行else()块。有没有办法克服这个问题 async function tt(){ return Promise.reject('failed'); } async function test(){ if (somecondition && awa
tt
类似于包中的一个函数,如果某件事情没有发生,它将返回拒绝承诺。如果触发了拒绝承诺,我想布尔化test()
函数中的wait tt()
。当前设置会捕获错误,并且不会执行else()
块。有没有办法克服这个问题
async function tt(){
return Promise.reject('failed');
}
async function test(){
if (somecondition && await tt()) //assume somecondition is true
{
console.log("accept")
}
else
{
console.log("reject")
}
}
test()
.catch(err=>console.log(err))
我希望避免使用
。然后(res…).catch(err…)
您可以在自己的函数中使用tt
来捕获错误:
async function wrapped_tt() {
try {
await tt();
return true; // or return await tt(); depending on what tt returns
} catch {
return false;
}
}
后来
当然,您可能希望检查由
tt
引发的错误,并且只决定为其中一些错误返回false
。所以您不关心已解析的值或拒绝错误?当然可以:
async function tt() {
return Promise.reject("failed");
}
function promiseAsBoolean(p) {
return p.then((s) => true, (e) => false);
}
async function test() {
if (somecondition && (await promiseAsBoolean(tt()))) {
console.log("accept");
} else {
console.log("reject");
}
}
完美的我试着做
p.then((s)=>返回true,(e)=>返回false)但是现在我知道语法了!更一般化!认可的!
async function tt() {
return Promise.reject("failed");
}
function promiseAsBoolean(p) {
return p.then((s) => true, (e) => false);
}
async function test() {
if (somecondition && (await promiseAsBoolean(tt()))) {
console.log("accept");
} else {
console.log("reject");
}
}