以下代码示例之间如何以不同方式处理错误



我正在努力了解promise和异步等待是如何工作的。我有三个实现,想知道它们是否等效,或者发生的事情是否有重大差异:

最初的实现:

function sendData(url,emailPass){
let bodyFormData = new FormData()
for (const [key, value] of Object.entries(emailPass)) {
console.log(key,value)
bodyFormData.append(key,value)
}    

axios({
method: 'POST',
url: url,
data: bodyFormData,
headers: {'Content-Type': 'multipart/form-data'}
})
.then(function (response){
console.log(response.data)
// do stuff with the data   
})
.catch(function(response){
console.log(response)
// do stuff with the error
})    
}

第二个实现:

async function sendData2(url,emailPass){
let bodyFormData = new FormData()
for (const [key, value] of Object.entries(emailPass)) {
//console.log(key,value)
bodyFormData.append(key,value)
}
try{
const response = await axios({
method: 'POST',
url: url,
data: bodyFormData,
headers: {'Content-Type': 'multipart/form-data'}
})
return response.data
}catch(e){
const error =['FATAL ERROR: See Admin', e]
return error
}
}

第三种实现方式:

function sendData3(url,emailPass){
let bodyFormData = new FormData()
for (const [key, value] of Object.entries(emailPass)) {
//console.log(key,value)
bodyFormData.append(key,value)
}
return axios({
method: 'POST',
url: url,
data: bodyFormData,
headers: {'Content-Type': 'multipart/form-data'}
})
.then(function(response){
return response.data
})
.catch(function(response){
return response
})
}

通过暂停执行直到返回的promise被实现或拒绝,使promise返回同步。promise的解析值被视为await表达式的返回值。使用async和await可以围绕异步代码使用普通的try/catch块。

asynctryawaitawait<-----erroawaitawaitcatch

当Promise可以通过then((或链接来解决时。

then().then().<-----error(将停止链接(then().then().catch( error for all )

最新更新