Почему я не могу вернуть строку из функции, которая получает значение из хранилища Ionic? - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь создать метод для получения значения из хранилища, который я могу использовать в своем приложении. Я создал сервис и добавил функцию ...

getValue() {
    this.storage.get('value').then((val) => {
        return val;
    });
}

тогда назовите это как

const value = this.myService.getValue();

console.log('value=' + value);

Но это не работает; console.log() просто возвращает value=[object Promise]

Как я могу вернуть значение в виде строки?

1 Ответ

0 голосов
/ 09 января 2019

Вы должны понимать, что метод Storage get() является асинхронным, что означает, что он возвращает Promise, а не значение напрямую. Вот почему вам нужно связать метод .then(), верно?

Когда вы связываете .then(...), вы передаете ему функцию в качестве параметра:

this.storage.get('values').then((value) => { ... });
//                              ^                ^
//                              |                |
//                              --------------------> This is a function

Эта функция является обработчиком этого обещания. Когда вы возвращаете что-то из этого, оно просто преобразует вывод обещания. Но это return НЕ будет выходить из этой функции.

Итак, ваша getValue() функция также должна возвращать Promise:

getValue() {
    return this.storage.get('value').then((val) => {
        return val;
    });
}

И где бы вы ни использовали его, вы должны рассматривать его как Обещание (цепочка .then(), чтобы получить его значение):

this.myService.getValue().then((value) => { console.log(value); }); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...