如何从 Promise React Native 中提取数据

How to extract Data from a 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>
) 

}

正如 docs 所说:

Returns

A Promise that resolves to a string containing the entire contents of the file.

因为它 returns 一个 Promise,你应该使用 await.then():

userOut = await FileSystem.readAsStringAsync(input.uri)

此外,如果您只是再次抛出错误,则不需要 catch 错误。