Ошибка Uncaught TypeError: Cannot read property 'getPlayer' of undefined
Почему происходит эта ошибка ?
<script type="text/javascript">
var player;
var sdk;
var ysdk;
YaGames.init().then(ysdk => {
console.log('Yandex SDK initialized');
window.ysdk = ysdk;
});
ysdk.getPlayer(Тут отмечается ошибка)
player.setData({
Save: ['G.Egs'],
}).then(() => {
console.log('data is set');
});
</script>
Я новичок и не очень понимаю, почему не работает
Ответы (1 шт):
Автор решения: Виталий Иванов
→ Ссылка
Ошибка происходит потому что ysdk - не задан,
код ниже выполняется асинхронно
YaGames.init().then(ysdk => {
console.log('Yandex SDK initialized');
window.ysdk = ysdk;
});
таким образом переменная ysdk на момент вызова еще не определена.
Ты можешь пропускать объекты которые не объявлены добавив ? после объекта, в твоем случае ysdk?.getPlayer, но скорее всего это не решит проблему в твоем случае.
код ниже возможно решит твою проблему:
<script type="text/javascript">
var player;
var sdk;
var ysdk;
YaGames.init().then(ysdk => {
console.log('Yandex SDK initialized');
window.ysdk = ysdk;
return Promise.resolve();
}).then(
() => {
ysdk.getPlayer
...остальной код, выполнится после того как ysdk будет задан
}
)
</script>
аналогичным образом ты можешь дальше делать "паровозик" из Promise и then. Так же судя по документации которую ты предоставил функция getPlayer() тоже вернет Promise и ты можешь сделать примерно так
<script type="text/javascript">
var player;
var sdk;
var ysdk;
YaGames.init().then(ysdk => {
console.log('Yandex SDK initialized');
window.ysdk = ysdk;
return Promise.resolve();
}).then(
() => {
return ysdk.getPlayer(параметры)
}).then(
() => {
...и так далее
})
</script>