У меня есть переменная, которую я устанавливаю на основе результата асинхронной функции, переменная initialState
const initialState = await getContacts()
.then((body) => {
console.log('body: ');
console.log(body);
return body;
}).catch(err => console.log(err));
My getContacts () возвращает обещание, которое должно быть результатом этой функции:
export async function getContacts() {
let data = fetch('/api/contacts').then((data) => {
console.log(data);
return data.json();
}).catch(err => console.log(err));
return data;
}
Я думаю, что частью моей проблемы может быть то, что я пытаюсь вызвать это из простого файла javascript.На самом деле это index.js моего приложения React.Я загружаю какое-то начальное состояние моего приложения из БД перед тем, как загрузить приложение.Я должен немного переместить этот код и очистить его, но я пытался запустить быстрый и грязный тест.Я получаю сообщение об ошибке компилятора:
SyntaxError: \contacts\client\index.js: Can not use keyword 'await' outside an async function
Мой index.js, который содержит ожидание, выглядит так:
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import { createStore, applyMiddleware } from 'redux';
import App from './components/app';
import reducers from './reducers';
import { composeWithDevTools } from 'redux-devtools-extension';
import { getContacts } from './server/api';
const initialState = await getContacts()
.then((body) => {
console.log('body: ');
console.log(body);
return body;
}).catch(err => console.log(err));
console.log('initial state: ');
console.log(initialState);
const composeEnhancers = composeWithDevTools({});
ReactDOM.render(
<Provider store={ createStore(reducers, initialState, composeEnhancers(
)) }>
<App />
</Provider>
, document.querySelector('.container'));