Я думаю, вам следует проверить учебник по асинхронному программированию и попытаться поиграть с несколькими примерами, используя простые тайм-ауты, чтобы освоить его, а затем перейти к более сложным вещам, таким как s3 и aws.
Вот как я предлагаю вам начать свое путешествие:
1) Изучите основные концепции асинхронного программирования с использованием чистого JS https://eloquentjavascript.net/11_async.html
2) Поиграйте с собственными примерами, используя обратные вызовы и тайм-ауты
3) Заменить обратные вызовы на Обещания
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises
4) Сделать это "угловым" способом с наблюдаемыми rxjs (аналогично JS Observable)
http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html
PS: Конкретнее:
Ваш код не выполняется, поскольку следующая строка выполняется асинхронно.Таким образом, код вызовет вашу функцию uploadfile и сразу же продолжит выполнение без ожидания.
this.uploadservice.uploadfile(file, k);
Как только вы выполните все пункты, описанные выше, вы сможете сделать что-то вроде этого (используя обещание):
this.uploadservice.uploadfile(file, k)
.then( result => {
console.log('Upload finished');
})
.catch(error => {
console.log('Something went wrong');
});