我在静态类中编写此函数

  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调用函数时却变得不确定

最佳答案

您可以使用Promiseasync-await

从promise的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 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');
            }
        }

07-24 09:47
查看更多