gpt4 book ai didi

android - 如何知道一个 Action 是全局完成的

转载 作者:行者123 更新时间:2023-12-01 19:30:44 24 4
gpt4 key购买 nike

这真的很常见,我想知道一个 Action 已经完成,然后做某事。为此,我们通常使用事件,但我不知道如何在我的情况下使用它。
我的场景:有一个 SplashScene它会在一段时间内显示一些动画,在那之后我导航到我的 HomeScene .除非SplashScene,否则我不想进行其他一些初始化走了,我们进入 HomeScene .
那些初始化在 App零件。我正在做的是因为 SplashScene动画时间是恒定的,我使用超时来初始化事物。

// Constants.ts
export const GlobalStaticData = {
initialDuration: 5000 // ms
}
// App

public componentDidMount() {
setTimeout(() => {
// initialize things
}, GlobalStaticData.initialDuration) // show dialogs after splash loading time
}
// SplashScene

private onAnimationEnd = () => {
NavigationActions.navigate(HomeScene)
}
但我知道这根本不好,我已经体验过有时哪个时间无法按预期工作,并且当应用程序仍在 SplashScene 时,事情会被初始化.
我在想如何使用 events但我不知道该怎么做。我想听一个值,例如 isSplashLoadCompletedApp组件并在其工作完成后更改该值。然后在 App它的事件监听器被调用并开始初始化。

最佳答案

你可以编写一个基本的事件系统来订阅一个事件,然后在另一个页面上发生某些事情时发出该事件:

const subscribers = {}
// Subscribe to loading your target page here Ex subsciber('home_load',()=>{ Your Logic })
const subscribe = (event,callback)=>{
if(subscribers[event] == null){ subscribers[event] = {}}
subscribers[event].push(callback)

}

const unSubscribe = (event,callback)=>{
....
}
// Call this inside your target page componentDidMount Ex: emitEvent('home_load',Some data or null)
const emitEvent = (event,data)=>{
if(subscribers[event]!=null && subscibers[event].length > 0){
for(const cb of subscribers[event]){
if(cb != null){cb()}
}
}

}

关于android - 如何知道一个 Action 是全局完成的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62916037/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com