I am a little bit confused with Promises. I have the following provider in Ionic + Angular:
@Injectable()
export class StorageProvider {
constructor( pub
Logging promise using console.log will just return promise object. StorageProvider's isLogged method should have return true/false so that the underlying caller will receive value inside .then success callback.
isLogged() {
return this.retrieve('user').then( value => {
//this return will `return` value in chained manner
return value ? true : false;
});
}
Caller
this.storage.isLogged().then(
(value) => console.log("isLogged", value)
)
Promise is way to deal async request, and it basically has 3 function that can appear in .then.
myPromiseCall().then(successFn, errorFn, notifyFn)
Sweet properties of promise is they can easily chained up. So that interdependent async code looks more readable. So whenever there is case of passing a data of one promise to another, so that time you returns a data from promiseA success That will automatically available in promiseB success, for eg. below
promiseA(){return promise };
promiseB(){ return promise };
promiseA().then(
//success fn
(data) => {
//do something
return data;
}
).then(
//success fn
(promiseAData) => {
console.log("Promise A data", promiseAData);
//do some awesome thing based on data retrieved from promiseA
return promiseB();
}
).then(successFn, errorFn)
It was important task to return a data from promiseA, that is how when you returned a data, the underlying chained promise success callback function got that data. If suppose the promiseA function didn't returned anything from its success function, the chained promiseB would get undefined. The similar thing was happening with you.