Следующий код отправляет запрос на публикацию в API, а затем сохраняет ответ API. Сохраненный объект - это выполненное обещание, а не тело. Я думал, что правильно использовал .then, поскольку нечто подобное работает для запроса get.
Следующая сага вызывается каждый раз, когда делается запрос на публикацию. Он содержит все: от почты до звонка и звонка на редуктор.
function* setData(action) {
const url = action.payload.url;
const data_obj = action.payload.data;
console.log(action);
try {
const json = fetch(url, {
method: "post",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(data_obj)
})
.then(statusHelper)
.then(response => response.json());
yield put({ type: "DATA_SENT", payload: json });
}
catch (e)
{
yield put({ type: ERROR_OCCURED, payload: { error : {message: "An Error occured sending HIT data. Please try again later"}}});
}
}
Ниже приведена функция statusHelper. Это пришло из другого SO ответа (я отредактирую в ссылке).
function statusHelper (response) {
if (response.status >= 200 && response.status < 300) {
return Promise.resolve(response)
} else {
return Promise.reject(new Error(response.statusText))
}
}