Я пытаюсь обернуть голову вокруг 'async / await', тот факт, что async
функции всегда возвращают Promises
, и использую асинхронные функции с Redux Thunks -
Я понимаю, что async
функции по определению всегда возвращают обещание.Что, если последняя строка асинхронной функции не является await
, хотя?
const foo = async (y, z) => {
await somethingElse()
const x = y + z;
}
Возвращает ли foo
Promise
, который разрешается в 'x', потому что он находится в последней строке?Если нет, то что Promise
возвращает?
Итак, при написании thunk у меня есть такая функция
export const loadData = key => async (dispatch) => {
const url = 'http://something.com/api/v1/get_key';
const keyObj = { key };
const method = 'POST';
const headers = { 'Content-Type': 'application/json' };
const body = JSON.stringify(keyObj);
try {
const res = await isofetch(url, { method, headers, body });
const data = await res.json();
dispatch(loadDataSuccess(data));
} catch (e) {
debug('error with fetch', e.toString());
}
Что возвращает loadData
?Я считаю, что dispatch
возвращает Promise
, поэтому loadData
возвращает это Promise
неявно?
Есть ли разница, если последняя строка была
return dispatch(loadDataSuccess(data));
?Спасибо за любую помощь!