我对async / await很新,并且想知道,用async / await重构下面的代码的最佳方法是什么?
export const createUser = (values, history) => {
return dispatch => {
axios.post('/api/signup', values)
.then(res => {
console.log('result', res);
}, rej => {
console.log('rejection', rej);
});
}
}
当只向.then
提供一个参数时,这对我来说非常简单,但是如果你有两个这样的参数会发生什么呢?
答案 0 :(得分:3)
.then
的两个参数只是成功和错误回调。您也可以将其写为.then(res => {}).catch(rej => {})
基本上,您可以将await
的结果视为.then
回调。每当您等待承诺的结果时,无论您是否使用承诺,请使用await.
对于任何错误,请使用通常的try
/ catch
。
return async () => {
try {
const res = await axios.post('/api/signup', values);
console.log('result', res);
}
catch (rej) {
console.log('rejection', rej);
}
}
要记住的一件事是async
函数总是返回Promise
,因此必须编写调用代码来解释它。
我写了一篇关于async
/await
的博客文章(免责声明,是我写了这篇文章)。1
答案 1 :(得分:3)
以下是如何操作,使用https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function作为参考:
const f = (values, history) => {
return async function createUser( dispatch ) {
try {
const res = await axios.post('/api/signup', values);
console.log('result', res);
} catch(e) {
console.log('reject', e);
}
};
}