我们遇到了一个问题,即当应用程序进入前台时,在执行setTimeout处理程序之前先执行了推送通知代码。这是事件的顺序:
setTimeout(this.logout, 10000)
被呼叫。this.logout
回调将不会被调用,直到将应用程序重新购买到前台为止。this.logout
代码将立即执行。结果是用户被踢出应用程序,然后才能查看推送通知。
是否可以通过某种方式重新安排“事件队列”中的事件,以便首先执行this.logout并随后执行Push Notification处理代码?
编辑:我们正在使用Expo Push Notifications SDK
示例代码
componentDidMount() {
this.notifications = Notifications.addListener(this.handleNotification);
this.timeout = setTimeout(this.logout, 10000);
}
componentWillUnmount() {
Notifications.remove(this.notifications);
}
this.handleNotification = () => { ... }
this.logout = () => { ... }
答案 0 :(得分:1)
我通过关闭setTimeout计时器并使用时间戳(Date.now()-startTime)来查找经过的时间来解决该问题。