Reputation: 3240
I apologize in advance for overlooking something fundamental but I can't get my head around the following issue.
I want to create a user on the server, subsequently showing all users (including the new one). To simplify things I have put an alert in the "then" clause. The problem is that the alert comes up before the "CreateUser" on the server has completed. According to the doc, "then" is executed when the promise has completed. Why is it the inverse on my pc ?
function createUser(newUser) {
userService.create(newUser) // Post creating new user
.then(
alert('Why do I come up before completion of the userService.create() function ?')
);
}
This is the userService.create() function:
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);
}
Thanks a million.
Upvotes: 0
Views: 474
Reputation: 5309
change
function createUser(newUser) {
userService.create(newUser) // Post creating new user
.then(
alert('Why do I come up before completion of the userService.create() function ?')
);
}
to:
function createUser(newUser) {
userService.create(newUser) // Post creating new user
.then(function(){
alert('Why do I come up before completion of the userService.create() function ?');
});
}
Upvotes: 2
Reputation: 7004
then
requires a function to be passed, so do this:
userService.create(newUser).then(() => {
alert('Why do I come up before completion of the userService.create() function ?')
});
Upvotes: 1