代码之家  ›  专栏  ›  技术社区  ›  Kirit Modi

react native中的回调函数定义和调用问题

  •  0
  • Kirit Modi  · 技术社区  · 7 年前

    export const getStoredData(key: string, callback?: ?(error: ?Error, result: ?string)) =>{
          try {
          const value = await AsyncStorage.getItem(key);
          if (value !== null){
            return value
          }
        } catch (error) {
          return error
        }
    }
    

    按如下方式调用函数:

       getStoredData('apple' , (error , result) =>{
         if (error) {
           console.log('error is = ', error);
         } else {
           console.log('result is = ', result);
         }
       });
    

    但我在定义函数unexpected token时出错。

    请帮帮我。

    4 回复  |  直到 7 年前
        1
  •  3
  •   Val    7 年前

    正如@MayankShukla所说,您没有正确使用arrow函数。

    要修复表达式,还需要添加 =>void callback ,

    export function getStoredData(key: string, callback?: ?(error: ?Error, result: ?string) => void ) {
    

    与上述代码一起消失。

    为注释1编辑:用于从

    export async function getStoredData(key: string, callback?: ?(error: ?Error, result: ?string) => void ) {
        try {
            const value = await AsyncStorage.getItem(key);
            if (value !== null) {
                callback(null, value);
                return value;
            }
        } catch (error) {
            callback(error, null);
            return error;
        }
    }
    
        2
  •  1
  •   Mayank Shukla    7 年前

    你用错了箭头函数,你忘了 = ,意外的令牌就是因为此 => 在这里:

    export const getStoredData(key: string, callback?: ?(error: ?Error, result: ?string)) => {
       ....
    }
    

    要么这样写(注意 =

    export const getStoredData = (key: string, callback?: ?(error: ?Error, result: ?string)) => { 
        ....
    }
    

    或删除 =>

    export function getStoredData (key: string, callback?: ?(error: ?Error, result: ?string)){
       ....
    }
    
        3
  •  0
  •   Daniel Andrei    7 年前

    export const getStoredData = (key, callback) => {
      try {
      const value = await AsyncStorage.getItem(key);
      if (value !== null){
        return value
      }
      } catch (error) {
        return error
      }
    };
    
    getStoredData('apple', (error, result) => {
     //do stuff
    });
    
        4
  •  0
  •   Suresh Mewara    7 年前
    /*
    
    * created by Suresh Mewara
    
    * Date 09-07-2018
    
    */
    
    import React, {Component} from 'react';
    import {AsyncStorage, } from 'react-native';
    
    export class DBPreference {
      // Database key
      static LOGIN_STATUS = 'loginStatus';
      static EULA_STATUS = 'eulaStatus';
      static ACCESS_CODE = 'accessCode';
    
    
    
    
    
      static retrieveData = async (key) => {
        try {
          const value = await AsyncStorage.getItem(key);
          if (value !== null) {
            // We have data!!
            console.warn(value);
            return value;
          }
         } catch (error) {
           // Error retrieving data
         }
      }
    
    
    
      static getStoredData = async (key, callback) => {
      try {
      const value = await AsyncStorage.getItem(key);
      if (value !== null){
        callback(null, value);
        console.warn(value);
        return value
      }
      } catch (error) {
        callback(error, null);
        return error
      }
    };
    }