我有一个if语句。
if(!(this._lf.getItem('test').then(result => result))) {
console.log(null);
} else {
console.log('Yay');
}
但是我似乎无法正常工作...
如果我用console.log这样记录getItem的结果
this._lf.getItem('te').then(result => console.log(result));
我返回null,
但是如果我这样做
console.log(this._lf.getItem('te').then(result => result);
我拿回了这个物体...
ZoneAwarePromise {__zone_symbol__state: null, __zone_symbol__value:
Array(0)}
__zone_symbol__state: true
__zone_symbol__value: null
__proto__: Object
我不确定我在做什么错吗?
我最近从作为脱机数据存储的localStorage切换到localForage,并且在localStorage中,可以通过执行以下操作轻松检查键是否为空。
if(!localStorage.getItem('key')) {
// do something
}
所以我只是想在这里做类似的事情
任何帮助将不胜感激!
谢谢
答案 0 :(得分:3)
由于getItem
返回Promise
,因此无法立即检查其值。您可以将其放在async
函数中,以便可以在await
内将if
的值:
if(!await this._lf.getItem('test')) {
console.log(null);
} else {
console.log('Yay');
}
或者,您可以使用条件运算符来减少重复次数:
console.log(
await this._lf.getItem('test')
? 'Yay'
: null
);
请注意,.then(result => result);
根本不执行任何操作-您可以完全忽略它。