You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

获取Session ID并调用API时遭遇‘Unexpected reserved word 'await'’错误的解决方案咨询

解决‘Unexpected reserved word 'await'’错误的方案

看起来你遇到的问题核心是没有在正确的位置添加async关键字——虽然你提到已经尝试加了,但大概率是加错地方啦。让我帮你梳理清楚:

await关键字只能在标记为async的函数内部使用,而你的onRefresh是React.useCallback的回调函数,这个回调函数本身需要被声明为async,因为里面包含了多处await调用(比如AsyncStorage.getItem和fetch)。

修正后的完整代码

const onRefresh = React.useCallback(async () => { // 关键:在这里添加async
  const deviceId = await AsyncStorage.getItem('@device_ID') 
  const sessionId = await AsyncStorage.getItem('@session_Id') 
  console.log('device ID: ',deviceId, 'session ID: ', sessionId) 
  setRefreshing(true); 
  // wait(5000).then(() => setRefreshing(false)); 
  try{ 
    let ServiceTicketData = await fetch(`${API_URL}/v1/serviceTicket`, { 
      method: 'GET', 
      headers: { 
        Accept: 'application/json', 
        'apiKey': 'asdkhjfgsed34e', 
        'deviceId': deviceId, 
        'sessionId': sessionId 
      }, 
    }); 
    let STData = await ServiceTicketData.json(); 
    console.log(STData); 
    setRefreshing(false) 
  } catch (error) { 
    console.error(error); // 改用console.error更便于区分错误信息
    setRefreshing(false); // 重要:出错时也要重置刷新状态,避免一直显示加载中
  } 
}, [refreshing]);

额外注意事项

  • 确认async是直接加在useCallback的箭头函数前面,也就是async () => {...}这个位置,这是解决语法错误的核心。
  • 错误捕获块里一定要加上setRefreshing(false),否则如果API调用失败,下拉刷新的状态会一直卡在“刷新中”,影响用户体验。
  • 如果你使用的是较新版本的React Native,AsyncStorage已经从核心库移到了@react-native-async-storage/async-storage包,记得确认是否正确安装并导入了这个依赖。

内容的提问来源于stack exchange,提问作者Ryan Fonseka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 09:13:16