一开始有些背景知识:) what is shutdown handling
我正在使用CAF SDK创建自定义接收器。
通过类似的关机处理,我尝试在回调中分派一些http请求,例如:
receiver.addEventListener(
cast.framework.system.EventType.SHUTDOWN,
e => {
// some http requests
HttpHandler.post(url, somePayload);
HttpHandler.post(anotherUrl, someOtherPayload);
....... (more requests to go)
});
但是,由于接收方应用程序随时可能终止(不到1秒),因此我不能保证这些请求已到达目的地。事实上,这些请求也没有到达目的地。
据我所知,没有办法通过CAF SDK本身推迟接收器应用程序的关闭。
是否有解决方法?有没有办法可以借助CAF SDK推迟关机?
答案 0 :(得分:1)
我做了一些研究,结果发现您也可以使用
window.addEventListener("beforeunload", e => {
...
});
代替
receiver.addEventListener(
cast.framework.system.EventType.SHUTDOWN,
e => {
...
});
A,这无助于确保回调中的所有内容都已执行:beforeunload回调的终止方式与关机处理程序相同。
答案 1 :(得分:0)
答案似乎很简单:将所有http请求都同步。
缺点也很明显,同步请求将阻塞线程。当一个请求由于未知原因而挂在某个地方的中间时,除非强制关闭,否则脚本将永远被阻止。
仍在寻找更好的改进方法。