Заранее прошу прощения за то, что упустил что-то фундаментальное, но я не могу понять следующую проблему.
Я хочу создать пользователя на сервере, а затем показать всех пользователей (включая нового). Чтобы упростить вещи, я поместил предупреждение в предложение «тогда». Проблема в том, что предупреждение появляется до завершения «CreateUser» на сервере. Согласно документу, «затем» выполняется, когда обещание выполнено. Почему на моем компьютере все наоборот?
function createUser(newUser) {
userService.create(newUser) // Post creating new user
.then(
alert('Why do I come up before completion of the userService.create() function ?')
);
}
Это функция userService.create():
function create(user) {
// alert(user);
const requestOptions = {
method: 'POST',
headers: { ...authHeader(), 'Content-Type': 'application/json' },
body: user
};
return fetch('/Client/Create', requestOptions).then(handleResponse, handleError);
}
handleResponse:
function handleResponse(response) {
return new Promise((resolve, reject) => {
....
handleError:
function handleError(error) {
return Promise.reject(error && error.message);
}
Миллион благодарностей.
Вы напрямую вызываете оповещение, вам нужно поместить функцию, которая вызывает оповещение, в ваш метод then
.then(()=>{alert('...')})
@DanielKrom Вот и все! Спасибо большое. Синтаксис EC6 еще более элегантен, чем использование функции.