Как использовать ключевое слово ожидания для реагирования на родной язык?
Я попытался использовать await/async для ответа native, но я получил неожиданную ошибку токена.
Я добавил код в свой исходный файл javascript:
var value = await AsyncStorage.getItem('STORAGE_KEY');
Моя собственная версия - 0.15.0.
Нужно ли добавить некоторую конфигурацию для использования async/wait?
Ответы
Ответ 1
Я использую async/await в своем собственном приложении для реагирования и не должен ничего делать, чтобы настроить или включить его в моем проекте. Мое использование принимает форму...
async getCache(key){
try{
let value = await AsyncStorage.getItem(key);
return value.json();
}
catch(e){
console.log('caught error', e);
// Handle exceptions
}
}
Примечание:
Если вы используете ожидание внутри функции, которая явно не объявлена с помощью async, вы получите сообщение об ошибке "Неожиданная синтаксическая ошибка маркера".
Ответ 2
Нужно ли добавить некоторую конфигурацию для использования async/wait?
Да. async
все еще не является окончательной частью спецификации; они в настоящее время считаются "Этап 3" (Кандидат).
Вы можете включить все языковые предложения Stage 3 в .babelrc
с помощью stage-3
preset. Кроме того, вы можете добавить плагин async
.
Ответ 3
Если у вас есть файл .babelrc
в корне вашего проекта, вам нужно добавить "react-native"
preset:
npm i babel-preset-react-native --save-dev
Затем в вашем файле .babelrc
добавьте следующее:
{
"presets": ["react-native"]
}
Подробнее здесь.
Ответ 4
После прочтения этого комментария в вопросах, связанных с реакцией GitHub, для меня работало следующее:
Добавьте следующий модуль npm:
npm install babel-preset-react-native-stage-0 --save
Добавьте в конфигурацию .babelrc
следующую конфигурацию:
{ presets: ['react-native-stage-0'] }
Очистите кеш:
$ watchman watch-del-all
$ ./node_modules/react-native/packager/packager.sh --reset-cache