Приклад async await
// Приклад для експерементів в JSFiddle
console.clear()
// Типичная логика для действий компонент
//---------------------------------------
//this.$store.dispatch('loginUser', user)
//.then(() => {
// this.$router.push('/')
//})
//.catch(err => console.log(err)
//---
loginUser('Вася')
.then((resp) => {
console.warn('LOGIN SUCCESS !!! '+resp)
})
.catch(err => console.warn(err))
console.warn('... тихонечко едем дальше ...')
// Типичная логика действий хранилища
//-----------------------------------
//async loginUser ({commit}, {email, password}) {
// commit('clearError')
// commit('setLoading', true)
// try {
// const user = await fb.auth().signIn(email, password)
// commit('setUser', new User(user.uid))
// commit('setLoading', false)
// } catch (error) {
// commit('setLoading', false)
// commit('setError', error.message)
// throw error
// }
//}
//--
async function loginUser(logName) {
try {
console.log('TRY...')
const response = await axios(logName)
if (true) {
// Тут комитим данные
console.log(response.value)
return response.value
} else {
throw new Error('Фигня пришла от сервера ...')
}
}
catch (error) {
console.log('CATCH... ' + error.message)
throw error
}
finally {
console.log('FINAL')
}
console.log('end')
}
// Емулируем АСИНХРОННОЕ обращение к API
function axios(fbName) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve({value:'User '+fbName+' login sucess.'})
reject(new Error("время вышло!"))
}, 1000);
})
}