Как извлечь данные из Promise React Native

Я использую Expo для этого проекта, где я разрешаю пользователю загружать файл, и я хочу сохранить этот файл как строку, где я позже его проанализирую. Я использую expo-document-picker и Expo-File-System.

Я думал, что могу использовать библиотеку FileSystem для чтения файла uri в виде строки с функцией: readAsStringAsync ()

Вот результат, который я получаю:

  Promise {
  "_40": 0,
  "_55": null,
  "_65": 0,
  "_72": null,
}

Это код, который у меня есть на данный момент:

export default function FileUploaded({navigation}) {
let userOut
const pickDocument = async() => {
    try{
        let input = await DocumentPicker.getDocumentAsync({
            type:'text/plain',
        })
        userOut = FileSystem.readAsStringAsync(input.uri)
        //console.log(userOut)
        //time to delete information
        //FileSystem.deleteAsync(userOut)
    }
    catch (error){
        throw(error)
    }
}

return (
    <View>
        <TouchableOpacity 
        style={{position:'absolute', top:100}}
        title='Upload Documnet (.txt only)'
        onPress= {()=>pickDocument()}>
            <Text>What is happening</Text>
        </TouchableOpacity>
        
    </View>
) 

}


person cornOnDaJaCob04    schedule 28.07.2020    source источник


Ответы (1)


Как говорится в документах:

Возврат

Обещание, которое преобразуется в строку, содержащую все содержимое файла.

Поскольку он возвращает обещание, вы должны использовать await или .then():

userOut = await FileSystem.readAsStringAsync(input.uri)

Кроме того, вам не нужно catch ошибку, если вы просто бросаете ее снова.

person Rafael Tavares    schedule 29.07.2020
comment
Большое спасибо! Я новичок в React Native, поэтому для меня это в новинку - person cornOnDaJaCob04; 30.07.2020