gpt4 book ai didi

javascript - 定义单个函数来处理其他函数的功能

转载 作者:行者123 更新时间:2023-11-30 11:52:39 26 4
gpt4 key购买 nike

我需要定义一个单独的函数来处理 setSlide、setMobile 和 hide 提供的功能,并只传入延迟发生时由 SetTimeout 调用的函数。我不知道该怎么做。有人可以解释一下如何做到这一点吗?谢谢。

(function($) {
var currentTime = new Date().getTime() / 1000;

var setSlide = function (timeout) {
setTimeout(showSlide, timeout * 1000);
},
showSlide = function () {
$('.newsletter-popup').addClass('slide-left');
},
setMobile = function (timeout) {
setTimeout(showMobile, timeout * 1000);
},
hide = function (timeout) {
setTimeout(hideMobile, timeout * 1000);
},
showMobile = function () {
$('.newsletter-popup').removeClass('hidden');
},
hideMobile = function () {
$('.newsletter-popup').addClass('hidden');
};
$(document).ready(function() {

if (readCookie('nl_suppress')) {
$('.newsletter-popup').removeClass('slide-left');
} else if (!readCookie('nl_display')) {
setSlide(10);
} else if (currentTime - readCookie('nl_display') > 86400) {
showSlide();
} else {
setSlide(currentTime - (readCookie('nl_display') + 86400));
}

$('.nlForm').submit(function() {
createCookie('nl_suppress', new Date(), 30);
});

function checkCookie() {
var date = new Date();
date.setTime(date.getTime() + (86400000));
$('.newsletter-popup').removeClass('slide-left');
hide(1);

if(readCookie('nl_display')) {
// already been clicked once, hide it
createCookie('nl_suppress', new Date(), 180);
return;
}
// first time this is clicked, mark it
createCookie('nl_display', new Date().getTime() / 1000, 180);
setMobile(14);
setSlide(15);
};

$('.newsletter-close').on('click', checkCookie);
});
})(jQuery);

最佳答案

听起来您想创建一个函数来执行与 setTimeout 相同的操作,但延迟乘以 1000,因此它以秒为单位。

看起来像这样:

function setTimeoutSeconds(func, delay) {
setTimeout(func, delay * 1000);
}

然后不调用 setSlidesetMobilehide,而是调用带有所需回调的 setTimeoutSeconds

setTimeoutSeconds(hideMobile, 1);
setTimeoutSeconds(showMobile, 14);
setTimeoutSeconds(showSlide, 15);

如果您仍想拥有 setSlide... 等功能,您可以使用部分应用的功能:

function applyTimeout(func) {
return function(delay) {
setTimeout(func, delay * 1000);
}
}

然后像这样创建它们:

var setSlide = applyTimeout(showSlide);

然后以同样的方式调用它们:

setSlide(15);

关于javascript - 定义单个函数来处理其他函数的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39006643/

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