asyncを使用して関数を実装しても機能しません。常に即座に解決され、result
は常に未定義です。私はそれがとても働いていなかった理由を私は約束を使用して、それを書き直し、それが正常に動作し把握することができませんでしjavascript async/awaitバージョンとプロミスバージョンの関数が動作しない
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)
)
})
}
私の心の中でこれらの2つの実装は、(明らかにそうでない)同一でなければならないので、私は混乱しています。うまくいけば、それは明らかなことです。事前の感謝のおかげです。
FWIW、あなたが必要としない 'ここに新しいPromise':あなただけvalidation.check''から始まるコードを返すことができます。 – lonesomeday