Я хочу хранить токен в локальном хранилище, а если он существует, слегка его настройте, а затем используйте его на странице.nativeStorage in ionic 2 и провайдеры
С ионным 1 было легко создать службу, которая только что получила данные из локального хранилища, изменила ее и вернула, чтобы основной компонент мог с ней справиться.
однако теперь, когда NativeStorage.getItem() возвращает обещание, как заставить службу полностью завершить получение элемента и завершить другие изменения, прежде чем возвращать измененный токен в качестве данных?
Я хочу быть в состоянии сделать:
export class Test{
let tok = "";
constructor(tokenService:TokenService){
this.tok = tokenService.getToken()
}
ngOnInit(){
alert(this.tok + " Is your token");
}
}
и tokenService провайдера есть:
getToken(){
// this doesn't work now because it will return undef for modified_token not waiting for the promise to finish
let modified_token:string;
NativeStorage.getItem('token').then(
data=>{
modified_token = data + 'modified';
}
);
return modified_token
}
ли я просто иметь другую основную функцию, которая вызывается, когда обещание закончено ?
нравится:
getToken(){
return NativeStorage.getItem('token')
}
и вместо того, чтобы в конструкторе в ngOnInit есть:
ngOnInit(){
tokenService.getToken().then(
data => {
let modified_token = data + "modified";
mainAction(modified_token);
})
}
и mainAction() имеет остаток того, что я хочу сделать?
Ваш 'getToken()' выглядит излишне сложным. Почему это не просто «вернуть NativeStorage.getItem (« токен »), а затем (data => data + 'modified')'? Обещает «цепочку» красиво! –
@SamMason вы абсолютно правы; Я обновил ответ с вашим предложением. Большое спасибо :) – sebaferreras