我怀疑这是JS Promises的功能,但是我有一个Promise可以很好地解决,但仍然包含错误的数据(即,不幸的地方为空值)。我希望错误的数据通过相同的Promises失败函数传递,如果那里有空值的话。
我想知道是否有办法使自己的成功处理程序无法兑现承诺?
答案 0 :(得分:3)
使用then
:
someAsyncTask()
.then(
data => {
if (!data) {
throw new Error('Bad data') // Or, return Promise.reject(...)
}
},
() => {
// If you need logic to handle when someAsyncTask rejects
// AND you want to continue to the next rejection handler,
// (in this case the catch), you'll need to either `throw`
// an error here or `return Promise.reject()`
}
)
.catch(
err => {
// err.name === 'Error'
// err.message === 'Bad data'
}
)
使用async/await
:
(async () => {
try {
const data = await someAsyncTask()
if (!data) {
throw new Error('Bad data')
}
} catch (err) {
// err.name === 'Error'
// err.message === 'Bad data'
}
})()