我有一个像这样的 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 中,我可以通过执行类似的操作轻松检查 key 是否为空。
if(!localStorage.getItem('key')) {
// do something
}
所以我只是想在这里做同样的事情
如有任何帮助,我们将不胜感激!
谢谢
最佳答案
因为 getItem
返回一个 Promise
,所以您无法立即检查它的值。您可以将其放入 async
函数中,这样您就可以在 if
中await
它的值:
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);
根本不执行任何操作 - 您可以完全忽略它。
关于javascript - if 语句中的速记 promise 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52266893/