Вот мой код, который заканчивается в строке с комментарием //fails
:
import {API} from "aws-amplify";
function* watchSitesRequested(dispatch) {
const watchAction = ('SITES_FETCH_REQUESTED');
const APIname="MyAPIGatewayAPI";
const APIpath="/configmagic/sites";
const APIinit={
headers: {
'Accept': 'application/json'
},
response: true,
};
while (true) {
yield take(watchAction);
try {
const request = yield call(API.get, APIname, APIpath, APIinit); //fails
yield put({type: "SITES_FETCH_SUCCEEDED", payload: {sites: request.data}});
} catch (e) {
yield put({type: "SITES_FETCH_FAILED", message: e.message})
}
}
}
Ошибка консоли:
TypeError: Cannot read property '_api' of null
at API.js:298
at step (API.js:137)
at Object.next (API.js:67)
at API.js:39
at new Promise (<anonymous>)
[snip]
Но если я изменю вызов API.get следующим образом, он будет вести себя как нужно:
const request = yield call(() => API.get(APIname, APIpath, APIinit))
Почему?
yield call()
Я думаю, что должен принимать несколько параметров после функции, и он должен нормально работать с Promise
, который возвращает API.get()
, не так ли?