Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以冻结应用程序,直到发生(异步)事件?_Javascript_React Native - Fatal编程技术网

Javascript 是否可以冻结应用程序,直到发生(异步)事件?

Javascript 是否可以冻结应用程序,直到发生(异步)事件?,javascript,react-native,Javascript,React Native,我想在我的应用程序中显示admobinterstital-Ad,然后再推到下一个屏幕 目前,我正在使用以下方法: 显示广告(加载需要1-2秒) 推到下一个屏幕 广告以异步方式加载,因此应用程序将推送到下一个屏幕,然后显示广告。 我希望它首先加载广告,然后推到下一个屏幕 我试过这个: onpress={() => showAsyncAD().then( () => title.slice(0, 4) === "X-01" ? naviga

我想在我的应用程序中显示
admobinterstital
-Ad,然后再推到下一个屏幕

目前,我正在使用以下方法:

  • 显示广告(加载需要1-2秒)
  • 推到下一个屏幕
  • 广告以异步方式加载,因此应用程序将推送到下一个屏幕,然后显示广告。 我希望它首先加载广告,然后推到下一个屏幕

    我试过这个:

    onpress={() =>
    showAsyncAD().then(
    () => title.slice(0, 4) === "X-01"
                  ? navigation.push(...)
                  : navigation.push(...)
                       );
    }
    }
    
    这确实有效,但在广告出现之前,用户可以按不允许的按钮。实际上,他可以在广告开始播放之前再次按下按钮并进入屏幕

    我如何才能冻结应用程序,直到广告出现,这样用户就不会做任何他不允许做的事情

    如果一个加载循环是可能的,这将是最好的选择

    谢谢你的意见


    编辑:我想使整个应用程序冻结,直到显示广告

    您可以使用显示异步操作处理的状态值

    const[processing,setProcessing]=useState(false);
    
    setProcessing(真)
    showAsyncAD()。然后(
    () => {
    setProcessing(假)
    标题.切片(0,4)=“X-01”
    ?导航。推送(…)
    :navigation.push(…)
    })
    
    并禁用在执行异步操作时不希望单击的按钮。比如,

    
    
    更新

    如果要禁用整个屏幕,您可以在屏幕上显示透明覆盖
    视图
    。它将具有屏幕的全宽和全高

    return (
      <View style={{
        position: 'relative',
        ...
      }}>
        // your views here
        {processing && <View style={{
          position: 'absolute',
          width: '100%',
          height: '100%',
          backgroundColor: 'transparent'
        }} />}
      </View>
    )
    
    返回(
    //你在这里的看法
    {处理&&}
    )
    
    我们到底在谈论哪个按钮?您用react native标记了它,所以我假设按钮在屏幕上的形式只是一个基本的
    ?因为在这种情况下,你可以很容易地控制当点击按钮时会发生什么和不会发生什么。我不知道你的函数是在什么环境下执行的。通常情况下,您会有条件地呈现一个正在加载的组件,直到某个状态更新,并重新呈现以前呈现过的组件。我不仅想冻结按钮;我想冻结整个应用程序。但这只会停用按钮。我想暂时停用整个应用程序。@Thuner可能会检查我的更新答案这看起来很有希望。我到底要写在哪里?或者从哪个角度来看。但是已经谢谢你了!可以将覆盖视图放置在容器视图的正内侧。请检查更新的代码。希望它能有意义。问题是它没有覆盖导航器,即使它是绝对的、全宽的和隐藏的
    return (
      <View style={{
        position: 'relative',
        ...
      }}>
        // your views here
        {processing && <View style={{
          position: 'absolute',
          width: '100%',
          height: '100%',
          backgroundColor: 'transparent'
        }} />}
      </View>
    )