我在静态类
中编写此函数 remove(){
Keychain
.resetGenericPassword(Config.keychainGroupe)
.then(function() {
AsyncStorage.removeItem('data', (err) => console.log('data deleted, return true', err));
});
}
如果数据被成功删除,我想异步返回true,所以我可以通过调用await MyClass.remove()
来使用该函数。我从AsyncStorage中删除项目后尝试返回true但是当我用awairt调用该函数时我得到了未定义
答案 0 :(得分:1)
您可以使用async-await
async remove(){
try {
const data = await Keychain.resetGenericPassword(Config.keychainGroupe)
try {
await AsyncStorage.removeItem('data');
return true;
} catch (error) {
return false
}
}
catch(error) {
console.log('keychain method failed')
}
}
答案 1 :(得分:1)
您可以使用Promise
或async-await
。
从承诺的then
方法返回值的确切方法如下
1)使用承诺
remove(){
//Notice return before the Keychain
return Keychain
.resetGenericPassword(Config.keychainGroupe)
.then(function() {
AsyncStorage.removeItem('data', (err) => console.log('data deleted, return true', err));
return true;
});
}
或
remove(){
return new Promise((resolve, reject) => {
Keychain
.resetGenericPassword(Config.keychainGroupe)
.then(() => {
AsyncStorage.removeItem('data', (err) => console.log('data deleted, return true', err));
resolve(true);
}).catch((err) => {
reject(err);
});
});
}
2)使用async-await
async remove(){
try {
const resolvedData= await Keychain.resetGenericPassword(Config.keychainGroupe)
if(resolvedData){
try {
await AsyncStorage.removeItem('data');
return true;
} catch (err) {
console.log('data deleted, return true', err);
}
}
}
catch(err) {
console.log('Something went wrong with executing resetGenericPassword');
}
}
答案 2 :(得分:0)
试试return Promise.resolve(true);
。它将true
值包装在下一个事件循环类型的Promise中。有关承诺的更多详细信息,请查看好书系列中的mdn promises documentation和/或Promises chapter 您不了解JS