Fetch不能在React Native新架构中工作



似乎无法让fetch()在我的React Native应用程序中工作(应该开箱即用)。使用新的体系结构与RN 0.70.4、TypeScript和一个设置来导入ES模块。

每次调用fetch()时,在控制台中打印此错误:

'Tried to call timer with ID %s but no such timer exists.', 6

使用这个测试按钮:

      <Button
        title="Test"
        onPress={async () => {
          console.log('PRESSED');
          const promise = fetch('https://www.google.com');
          console.log('promise:', promise);
          try {
            const res = await promise;
            console.log('res:', res);
          } catch (err: unknown) {
            console.log('err:', err);
          }
        }}
      />

按下后,控制台中只出现PRESSED,没有其他日志消息。在Flipper网络面板中,看起来没有进行网络调用。

当我添加import fetch from 'cross-fetch';时,我得到2行控制台输出:
18:17:27.196  32561  appname  PRESSED
18:17:27.210  32561  appname  'promise:', { _h: 0, _i: 0, _j: null, _k: null }

之后就没有了;然而,奇怪的是,成功的网络调用出现在flipper网络日志中。

你知道这是怎么回事吗?

你应该使用async/await来获取。你看到{ _h: 0, _i: 0, _j: null, _k: null }是因为网络调用需要一些时间来执行,你没有使用async/await,所以响应是一个未解决的承诺。您也可以使用.then.catch

相关内容

  • 没有找到相关文章

最新更新