gpt4 book ai didi

javascript - 我不断收到的控制台警告是什么 - 延迟长时间运行的计时器任务以提高滚动平滑度?

转载 作者:数据小太阳 更新时间:2023-10-29 03:49:08 26 4
gpt4 key购买 nike

我的应用程序是一个 Cordova 应用程序。这周我在控制台中看到了很多警告:

Deferred long-running timer task(s) to improve scrolling smoothness. See crbug.com/574343.

本周之前从未见过。我确实使用了很多设置超时,因为一些进程非常大,因此不会向用户呈现其处理过程。

// GETS MEDICINES VIA MYCLOUD
function getMedicinesFromServer() {
// Start Process
myProcess("Syncing Medicines", true);
setTimeout(function () {
var data = getAllModifiedMedicines(viewModel.MedicineCupboard());
sendAllMedicines(data);
}, 300);
}

这是误报还是有更好的方法。

这些愚蠢的超时的全部原因是为了确保用户知道他们何时单击按钮以向上推送数据,他们会意识到这一点。

旧方法:

myProcess("Syncing Medicines", true);
var data = getAllModifiedMedicines(viewModel.MedicineCupboard());
sendAllMedicines(data);

不保证向用户呈现该过程。

最佳答案

警告告诉您您的计时器没有按时触发,因为它是一个长时间运行的回调(> 50 毫秒)并且用户正在/即将滚动。当您的回调运行时,Chrome 无法开始滚动页面,因此这会导致“卡顿”,即用户输入没有得到及时处理。为了让用户获得更好的体验,Chrome 决定推迟触发该回调,直到运行它不会对用户产生负面影响为止。

我不知道你想做什么的细节,但正确的做事方式是把你的一个大回调分成更小的批处理并将它们分散开,这样任何一个调用都不会明显延迟用户操作。您还可以查看使用 requestIdleCallback它只会在 Chrome 空闲时调用你的函数,非常适合非时间关键任务。 (但是,requestIdleCallback 目前仅在 Chrome 上受支持)。

关于javascript - 我不断收到的控制台警告是什么 - 延迟长时间运行的计时器任务以提高滚动平滑度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37048438/

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