我實現了一個使用異步功能,它不起作用。它總是立即解決,並且result
始終未定義。JavaScript異步/等待版本與Promise版本的功能不起作用
原來這裏是異步版本:
async function validateOne(item, type, state) {
const validation = VALIDATIONS[type]
const result = !(await validation.check(state[item.name].value, state))
return result || validation.message
}
我無法弄清楚,爲什麼它不工作,所以我重寫了它使用的承諾,它工作正常。
function validateOne(item, type, state) {
const validation = VALIDATIONS[type]
return new Promise(resolve => {
validation.check(state[item.name].value, state).then(result =>
resolve(result || validation.message)
)
})
}
我很困惑,因爲在我看來這兩個實現應該是相同的(顯然他們不是)。希望這是顯而易見的,預先感謝任何見解!
FWIW,你不需要'這裏新Promise':你可以只返回從'validation.check'啓動代碼。 – lonesomeday