【问题标题】:Only first requestAsync works for UWP ApplicationTrigger只有第一个 requestAsync 适用于 UWP ApplicationTrigger
【发布时间】:2019-05-18 08:42:50
【问题描述】:

应用程序中的第一个应用程序触发器调用按预期工作,我在以下代码之后在后台任务(入口点)中遇到了第一个断点(结果为“允许”):

applicationTrigger.requestAsync(appParams).done(res => {
            const resultKeys = Object.keys(Background.ApplicationTriggerResult);
            console.debug(resultKeys[res]);
        });

我的应用程序运行过程中的后续调用也显示为“允许”,但从不调用后台任务代码。我知道这一点,因为后台任务文件中的断点从未被命中,并且该后台任务中的 XHR 请求从未被调用(它仅在第一个应用程序触发 requestAsync 调用时被调用)。我可以让它多次成功调用的唯一方法是在进行调用之前取消注册并重新注册应用程序触发器相关的任务(我觉得我不应该求助于此)。

我的后台任务代码中有 deferral.complete() 用于异步操作何时完成,所以这不是问题。我也刚刚尝试等待两分钟,然后再次触发,但它仍然没有运行任务。 JavaScript UWP 后台任务的文档有点稀疏,所以如果有人可以帮助我,将不胜感激。

【问题讨论】:

  • 我有一些问题要和你澄清。 1.您的操作系统构建版本和项目的目标版本是什么? 2. 你在后台任务中发送 XHR 请求多长时间了? 3. 如果可能,请提供minimal reproducible example
  • 1. 10.0.10240.010.0.10240.0 2. 你的意思是请求用了多长时间?那是几毫秒。 3. 我将努力提供一个可验证的示例,但这需要一些时间。

标签: javascript uwp background-task


【解决方案1】:

问题是我没有在后台任务网络工作者中调用 close,我只是在阅读以下内容后推断出这可能是问题(以紫色突出显示的注释):

https://docs.microsoft.com/en-us/uwp/api/windows.ui.webui.iwebuibackgroundtaskinstance

作为参考,关闭的调用很简单:

close();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 2017-03-08
    相关资源
    最近更新 更多