Reputation: 387
I'm trying to read a list of hospitals from a file in a React Native project using Expo FileSystem. I want to wait for the list to return so that I can render it on the screen. I can easily get the result in the ".then" block, but I'm struggling to figure out how to wait for the list from readAsStringAsync in the same function. My attempts always return the Promise and not the list, or an "unhandled promise rejection" error occurs. Here is my code:
getHospitals = async () => {
let result = null;
let content = await FileSystem.readAsStringAsync(FileSystem.documentDirectory + 'hospitals.json').then(function (data) {
result = data;
}).catch(function(error) {
console.log(error);
});
return result;
}
How can I wait for a result from readAsStringAsync?
Upvotes: 3
Views: 4338
Reputation: 2323
async
, await
is replacement for then
, catch
callbacks. They are not supposed to be used together.
getHospitals = async () => {
let result = null;
try {
result = await FileSystem.readAsStringAsync(FileSystem.documentDirectory + 'hospitals.json');
} catch(e) {
console.log(e);
}
return result;
}
Upvotes: 3