Я почти уверен, что метод logout () создает обещание - он работает асинхронно.Таким образом, страница, вероятно, уничтожается до выполнения кода выхода из обещания.
Вы можете подтвердить это, выполнив console.log(Auth.signOut());
.Если это обещание, оно будет регистрировать Promise { <pending> }
Невозможно остановить выгрузку страницы, так как это было бы плохо, если бы мы могли.
Вам нужна синхронная функция выхода из системы,К счастью, вы можете просто очистить локальное хранилище браузера, что является синхронной операцией.(Локальное хранилище - это место, где Amplify хранит токены аутентификации.)
if (!keepSignedIn) {
window.addEventListener('unload', function(event) {
localStorage.clear();
});
}
В зависимости от ситуации вам может потребоваться вместо этого найти и удалить отдельные элементы локального хранилища, а не очистить их все.