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