如何从 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
错误。
我正在为这个项目使用 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
错误。