Когда у вас есть функция, подобная вашей, и вам нужно «дождаться завершения асинхронных функций внутри нее», вам нужно использовать async / await. По сути, это оборачивает всю вашу функцию в одно обещание, которое затем возвращается. Асинхронная функция всегда автоматически возвращает Promise.
Нечто подобное может сработать, однако я не совсем уверен в вашем коде, поскольку вы предоставили только фрагмент кода. Если вы предоставите кодовую коробку, я могу взглянуть на нее глубже.
async login(logininfo: any) {
let seq = this.api.post('auth/login', logininfo);
let returnValue = undefined;
let subscription = await seq.subscribe(async (res: any) => {
if (res.status == 'success') {
returnValue = await this.storage.set('token', res.token).then(data => {
console.log('Token Stored', data); //This always get called after `return seq;`
},
error => {
console.log('Error storing token', error);
});
}
}, err => {
console.error('ERROR', err);
});
return returnValue; //This always returns a promise
}