1

首先是一些背景阅读:)什么是关机处理

我正在使用 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 的帮助下推迟关机?

4

2 回答 2

1

我做了一些更多的研究,结果你也可以使用

window.addEventListener("beforeunload", e => {
    ...
    });

代替

receiver.addEventListener(
    cast.framework.system.EventType.SHUTDOWN,
    e => { 
    ...
    });

唉,这无助于确保回调中的所有内容都被执行: beforeunload 回调以与关闭处理程序相同的方式终止。

于 2019-09-03T14:57:18.580 回答
0

答案似乎很简单:把所有的http请求都变成同步的。

缺点也很明显,同步请求会阻塞线程。当一个请求由于未知原因被挂在某个地方时,除非强制关闭,否则脚本将永远被阻塞。

仍在寻找更好的方法来改进它。

于 2018-08-22T01:47:52.437 回答