Чтобы быть "thenable" loadMyAsyncData
должен возвращать Promise
.
Вот пример loadMyAsyncData, возвращающий обещание и использующий setTimeout
для задержки разрешения обещания через 1 секунду
const loadMyAsyncData = () => new Promise((resolve, reject) => {
setTimeout(() => resolve({
example: "value"
}), 1000)
})
Вы можете использовать код выше this._asyncRequest = loadMyAsyncData().then( ..... )
или использовать вместо него async / await
async componentDidMount() {
this._asyncRequest = loadMyAsyncData()
const externalData = await this._asyncRequest;
this._asyncRequest = null;
this.setState({externalData});
}
пример кода и коробки