0

async를 사용하여 함수를 구현했으나 작동하지 않습니다. 항상 즉시 해결되며 result은 항상 정의되지 않습니다.javascript async/await 버전 대 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 
} 

그렇게 나는 약속을 사용하여 재 작성 작동하지 않는 이유를 알아낼 수 있고 그것을 잘 작동합니다.

내 마음에 두 가지 구현이 동일해야합니다 (명확하게 일치하지 않음). 혼란 스럽습니다. 바라건대 그것은 어떤 통찰력이라도 미리 알려 줘서 감사합니다.

+0

FWIW, 필요하지 않은'여기에 새로운 Promise' : 당신은 그냥 validation.check' '로 시작하는 코드를 반환 할 수 있습니다. – lonesomeday

답변

0

Nevermind, 나는 하나의 버전이 결과를 부정하고 다른 하나가 오타가있는! 그들은 그 오타가 아닌, 사실 동일합니다!

1

귀하의 async function에는 불필요한 논리가 포함되어 있지 않습니다 (! 연산자). 시도 :

async function validateOne(item, type, state) { 
    const validation = VALIDATIONS[type] 
    const result = await validation.check(state[item.name].value, state) 
    return result || validation.message 
} 

또는이이 단축 될 수

async function validateOne(item, type, state) { 
    const validation = VALIDATIONS[type] 
    return (await validation.check(state[item.name].value, state)) || validation.message 
}