Angular 为什么可以';我从一个函数返回一个字符串,该函数从离子存储器中获取一个值?
我正在尝试创建一种从存储中获取价值的方法,我可以在整个应用程序中使用它。我已经创建了一个服务并添加了功能Angular 为什么可以';我从一个函数返回一个字符串,该函数从离子存储器中获取一个值?,angular,ionic-framework,Angular,Ionic Framework,我正在尝试创建一种从存储中获取价值的方法,我可以在整个应用程序中使用它。我已经创建了一个服务并添加了功能 getValue() { this.storage.get('value').then((val) => { return val; }); } 那就这样说吧 const value = this.myService.getValue(); console.log('value=' + value); 但它不起作用console.log()只返回v
getValue() {
this.storage.get('value').then((val) => {
return val;
});
}
那就这样说吧
const value = this.myService.getValue();
console.log('value=' + value);
但它不起作用console.log()
只返回value=[objectpromise]
如何以字符串形式返回值?您必须了解
存储get()
方法是异步的,这意味着它返回一个承诺,而不是直接返回值。这就是您需要链接.then()
方法的原因,对吗
当链接。然后(…)
时,将函数作为参数传递给它:
this.storage.get('values').then((value) => { ... });
// ^ ^
// | |
// --------------------> This is a function
此函数是该承诺的处理程序。当您从中返回某些内容时,它只会转换promise输出。但返回的不会从该函数中冒泡出来
因此,您的getValue()
函数还必须返回一个承诺:
getValue() {
return this.storage.get('value').then((val) => {
return val;
});
}
无论您在哪里使用它,都必须将其视为一种承诺(chain.then()
以使其具有价值):
您必须了解Storage
get()
方法是异步的,这意味着它返回一个承诺,而不是直接返回值。这就是您需要链接.then()
方法的原因,对吗
当链接。然后(…)
时,将函数作为参数传递给它:
this.storage.get('values').then((value) => { ... });
// ^ ^
// | |
// --------------------> This is a function
此函数是该承诺的处理程序。当您从中返回某些内容时,它只会转换promise输出。但返回的不会从该函数中冒泡出来
因此,您的getValue()
函数还必须返回一个承诺:
getValue() {
return this.storage.get('value').then((val) => {
return val;
});
}
无论您在哪里使用它,都必须将其视为一种承诺(chain.then()
以使其具有价值):
如何将值设置为变量,以便在其他地方使用?执行时:this.api.getValue().then((value)=>{let myValue=value;})
然后console.log('myValue='+myValue)
我得到myValue=undefined
你不能。假设promisse是计时器中的一个函数:它可能会在代码剩余部分之后运行,因此当控制台日志运行时,该变量为空。这就是为什么你需要一直使用期票。做好准备。ionic(和许多框架)上的所有内容都是异步的,都会有这种行为。我如何将值设置为变量,以便在其他地方使用它?执行时:this.api.getValue().then((value)=>{let myValue=value;})
然后console.log('myValue='+myValue)
我得到myValue=undefined
你不能。假设promisse是计时器中的一个函数:它可能会在代码剩余部分之后运行,因此当控制台日志运行时,该变量为空。这就是为什么你需要一直使用期票。做好准备。ionic(和许多框架)上的所有内容都是异步的,并且会有这种行为。