Javascript 正在使用.catch和async Wait是否会导致问题?
我的问题是,使用.catch和async Wait会导致问题吗 例如:Javascript 正在使用.catch和async Wait是否会导致问题?,javascript,async-await,Javascript,Async Await,我的问题是,使用.catch和async Wait会导致问题吗 例如: 函数f1(){ 返回新承诺((res,rej)=>{ rej(1) }) } 异步函数f2(){ wait f1().catch(ex=>{})//这就是我的意思 } f2()我想你要找的是这个 function f1(){ return new Promise((res,rej)=>{ rej(1) }) } async function f2(){ try { const respo
函数f1(){
返回新承诺((res,rej)=>{
rej(1)
})
}
异步函数f2(){
wait f1().catch(ex=>{})//这就是我的意思
}
f2()
我想你要找的是这个
function f1(){
return new Promise((res,rej)=>{
rej(1)
})
}
async function f2(){
try {
const response = await f1();
// use the response from f1()
} catch(err) {
throw new Error(err);
}
}
f2()
类似于async/await
的东西是一个承诺的包装器,允许您编写同步代码。否则你会看到
function f2(){
let response;
f1().then(res => {
response = res
})
.catch(err => {
throw Error(err)
});
}
这取决于“问题”的含义,但以下代码:
async function f2() {
await f1().catch(ex => { /* ... code in catch ... */ }) // this is what I mean
}
相当于:
async function f2() {
try {
await f1()
} catch (ext) {
/* ... code in catch ... */
} // this is what I mean
}
正如您所说,使用
.catch
而不是try catch
是很有用的,因为它可以(并非在所有情况下)使您的代码更具可读性。但是您需要始终考虑.catch
是否是可读性的正确选择。如果您将其用于可恢复的错误处理,它会很好地工作。为什么捕获问题会导致问题?您担心会导致什么问题?使用.catch
没有错,但不清楚您为什么要这样做。您可以使用try/catch编写相同的代码:try{await f1();}catch(ex){}
no它不会导致问题我希望以这种方式使用它来捕获特定错误,并在不停止整个函数的情况下对其采取正确的操作。如果我使用try-catch,代码很快就会被污染。thx回答:在try catch块和中抛出新错误(err)
的目的是什么?在f1()中。然后(res=>{
如果不从f1
返回承诺,将导致未经处理的承诺拒绝。当然。我明白你的意思。但是,此人试图理解承诺解析/拒绝与异步/等待并列的工作区别。他们显然混淆了一些语法。