當前位置:首頁 » 網頁前端 » 前端配置定時任務
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

前端配置定時任務

發布時間: 2022-10-15 13:50:24

⑴ 使用js怎麼設置定時器在每天0點執行

JS就是Javascript哈,這個是伺服器前端(瀏覽器)腳本語言,只要用戶把瀏覽器一關,就沒用了。定時器一般是用伺服器腳本語言JAVA,C#,PHP等語言來寫。
JS來寫定時任務幾乎沒用哈

⑵ java web項目現在有一個這樣的需求:用戶可以在前端進行預約,時間隨便設置。

前端可以用datepickeer插件直接限制讓用戶選取大於當前的時間,存到資料庫

dateFmt:'yyyy-M-d H:mm:ss' ,minDate: '%y-%M-%d %H:%m:%s'
時間格式 ,最小日期是當前日期
然後在你伺服器通知的方法里加條件,當前時間大於預約時間,觸發方法。

⑶ java的兩個問題,,

  1. 使用JS的定時器setInterval.如果需要跟後端通訊,用JS+AJAX來請求後端數據展示.後端的類似quartz是做不到的.

  2. 給你參考,這個是求連續3個月,平均工資大於等於3000的.

  3. sql">SELECT
    x.referrer_id,
    x.min_refer_time,
    x.max_refer_time,
    x.cnt
    FROM
    (
    SELECT
    t.referrer_id,
    min(t.refer_time)ASmin_refer_time,
    max(t.refer_time)ASmax_refer_time,
    count(t.refer_time)AScnt
    FROM
    (
    SELECT
    a.referrer_id,
    a.refer_time,
    a.rownum,
    (
    LEFT(a.refer_time,4)*12+RIGHT(a.refer_time,2)
    )-a.rownumASmon
    FROM
    (
    SELECT
    @rownum:=@rownum+1rownum,
    referrer_id,
    refer_time
    FROM
    partner_rewards_detail,
    (SELECT@rownum:=0)b
    WHERE
    month_average>=3000
    ORDERBY
    1,
    2
    )a
    )t
    GROUPBY
    t.referrer_id,
    t.mon
    )x
    WHERE
    x.cnt>=3

⑷ Python需要定時任務,時間是不固定的。需要處理的任務也不固定,怎麼捉。

開個子線程,裡面放下面的代碼
while True:
dosomethings()# 查詢任務列表,執行任務列表

time.sleep(60)
也就是每分鍾檢查一次,注意這個查詢是要放到 子線程 處理的。

⑸ Web前端如何使用Vue編寫一個長按指令

今天小編要跟大家分享的文章是關於Web前端如何使用Vue編寫一個長按指令?正在從事web前端工作的小夥伴們有沒有想過只需按住一個按鈕幾秒鍾就能在你的
Vue應用中觸發一個功能?


有沒有想過創建一個按鈕,按下一次就可以清除單次輸入(或者持續按住可以清除所有輸入)?


本文就是講解如何在按下(或者按住)一個按鈕時,既執行一個函數,又清除輸入。


首先,我會講解如何使用純JS實現。而後也會創建一個Vue指令。下面就讓我們一起來看一看吧。

一、原理


要實現長按,用戶需要按下並按住按鈕幾秒鍾。


想通過代碼模擬這一效果,我們需要在滑鼠「點擊」按下按鈕時,啟動一個計時器監聽用戶按下的時長,如果時間超過我們期望的時長,就執行相應的函數。


非常簡單!然而,我們需要知道用戶何時按住按鈕。


二、如何實現


當用戶點擊按鈕時,在點擊事件之前會觸發另外兩個事件:mousedown和mouseup。


當用戶按下按鈕時觸發mousedown事件,用戶松開按鈕時調用mouseup事件。


我們需要做的是:


1.mousedown事件觸發時,啟動計時器。


2.一旦mouseup事件在預期的2秒前被觸發,就清除計時器,不要執行相應的函數。就當作一個普通的點擊事件。


只要計時器在我們預設的時間內沒有被清除,即mouseup
事件沒有被觸發——那麼可以斷定用戶沒有釋放按鈕。因此,可以判定為一次長按,可以執行關聯的函數。


三、實踐


讓我們深入代碼,完成這一功能。


首先,我們必須定義三件事,即:


1.一個變數用於存儲計時器。


2.一個啟動功能函數,用於啟動計時器。


3.一個取消功能函數,用於取消計時器。


1、變數


這個變數主要用來保存setTimeout的值,以便當滑鼠mouseup事件觸發時我們可以取消它。


letpressTimer=null;


我們把變數值設置為null是為了在執行取消操作前,檢查這個變數的值判斷當前是否有一個正在運行的計時器。


2、啟動函數


這個函數包括一個setTimeout,它是JavaScript中的一個基本方法,允許在特定時間之後執行一個函數。


注意,click事件執行的過程中,會觸發另外兩個事件。但是我們需要啟動計時器的是mousedown
事件。如果只是點擊事件,不需要啟動計時器。//創建計時器(1s之後執行函數)

letstart=(e)=>{

//如果是點擊事件,不啟動計時器

if(e.type==='click'&&e.button!==0){

return;

}

//在啟動一個定時器之前確保沒有正在運行的計時器

if(pressTimer===null){

pressTimer=setTimeout(()=>{

//執行任務!!!

},1000)

}

}

3、取消函數


這個函數見名知意,用來取消啟動函數創建的setTimeout。


要取消setTimeout,可以使用JavaScript中的clearTimeout方法,它主要用來清除setTimeout()
方法設置的計時器。


在使用clearTimeout之前,需要檢查pressTimer變數是否為null。如果沒有為
ull,意味著有一個正在運行的計時器。因此,我們需要先清除它,並且將pressTimer變數設置為null。letcancel=(e)=>{

//檢查pressTimer的值是否為null

if(pressTimer!==null){

clearTimeout(pressTimer)

pressTimer=null

}

}

一旦mouseup事件觸發,這個函數就會被調用。


4、設置觸發器


剩下的就是將事件監聽器添加到想要長按效果的按鈕上。


addEventListener("mousedown",start);


addEventListener("click",cancel);


以上代碼合到一起是這樣://定義變數

letpressTimer=null;

//創建計時器(1秒後執行函數)

letstart=(e)=>{

if(e.type==='click'&&e.button!==0){

return;

}

if(pressTimer===null){

pressTimer=setTimeout(()=>{

//執行任務!!!

},1000)

}

}

//停止計時器

letcancel=(e)=>{

//檢查是否有正在運行的計時器

if(pressTimer!==null){

clearTimeout(pressTimer);

pressTimer=null;

}

}

//選擇id為longPressButton的元素

letel=document.getElementById('longPressButton');

//添加事件監聽器

el.addEventListener("mousedown",start);

//長按事件取消,取消計時器

el.addEventListener("click",cancel);

el.addEventListener("mouseout",cancel);

5、用Vue指令包裝


創建Vue指令時,可以創建全局或局部指令,本文中,我們採用全局指令。


首先,我們必須聲明自定義指令的名稱。


Vue.diective('longpress',{


})


這就注冊了一個名為v-longpress的全局自定義指令。


接下來,我們添加帶參數的bind鉤子函數,它允許我們引用指令綁定的元素,獲取傳遞給指令的值,並標識指令使用的組件。Vue.directive('longpress',{

bind:function(el,binding,vNode){

}

})

接下來,我們在bind函數中添加長按功能的代碼。Vue.directive('longpress',{

bind:function(el,binding,vNode){

//定義變數

letpressTimer=null;

//定義函數處理程序

//創建計時器(1秒後執行函數)

letstart=(e)=>{

if(e.type==='click'&&e.button!==0){

return;

}

if(pressTimer===null){

pressTimer=setTimeout(()=>{

//執行任務!!!

},1000)

}

}

//取消計時器

letcancel=(e)=>{

//檢查是否有正在運行的計時器

if(pressTimer!==null){

clearTimeout(pressTimer);

pressTimer=null;

}

}

//添加事件監聽器

el.addEventListener("mousedown",start);

//取消計時器

el.addEventListener("click",cancel);

el.addEventListener("mouseout",cancel);

}

})

接下來,我們需要添加一個函數來運行傳遞給longpress指令的方法。Vue.directive('longpress',{

bind:function(el,binding,vNode){

//定義變數

letpressTimer=null;

//定義函數處理程序

//創建計時器(1秒後執行函數)

letstart=(e)=>{

if(e.type==='click'&&e.button!==0){

return;

}

if(pressTimer===null){

pressTimer=setTimeout(()=>{

//執行函數

handler();

},1000)

}

}

//停止計時器

letcancel=(e)=>{

//檢查是否有正在運行的計時器

if(pressTimer!==null){

clearTimeout(pressTimer);

pressTimer=null;

}

}

//運行函數

consthandler=(e)=>{

//執行傳遞給指令的方法

binding.value(e)

}

//添加事件監聽器

el.addEventListener("mousedown",start);

//取消計時器

el.addEventListener("click",cancel);

el.addEventListener("mouseout",cancel);

}

})

現在,可以在Vue應用中使用這個指令了,除非使用者給指令傳入的值不是一個函數。因此,我們需要通過警告反饋給使用者。


為了反饋給使用者,我們在bind函數中添加了以下內容://確保提供的表達式是函數

if(typeofbinding.value!=='function'){

//獲取組件名稱

constcompName=vNode.context.name;

//將警告傳遞給控制台

letwarn=`[longpress:]providedexpression'${binding.expression}'isnotafunction,buthastobe`;

if(compName){warn+=`Foundincomponent'${compName}'`}

console.warn(warn);

}

最後,如果這個指令也適用於觸屏設備,那會是極好的。因此,我們添加了touchstart、touchend和touchcancel
事件監聽器。


最終代碼如下:Vue.directive('longpress',{

bind:function(el,binding,vNode){

//確保提供的表達式是函數

if(typeofbinding.value!=='function'){

//獲取組件名稱

constcompName=vNode.context.name;

//將警告傳遞給控制台

letwarn=`[longpress:]providedexpression'${binding.expression}'isnotafunction,buthastobe`;

if(compName){warn+=`Foundincomponent'${compName}'`}

console.warn(warn);

}

//定義變數

letpressTimer=null;

//定義函數處理程序

//創建計時器(1秒後執行函數)

letstart=(e)=>{

if(e.type==='click'&&e.button!==0){

return;

}

if(pressTimer===null){

pressTimer=setTimeout(()=>{

//執行函數

handler();

},1000)

}

}

//取消計時器

letcancel=(e)=>{

//檢查計時器是否有值

if(pressTimer!==null){

clearTimeout(pressTimer);

pressTimer=null;

}

}

//運行函數

consthandler=(e)=>{

//執行傳遞給指令的方法

binding.value(e)

}

//添加事件監聽器

el.addEventListener("mousedown",start);

el.addEventListener("touchstart",start);

//取消計時器

el.addEventListener("click",cancel);

el.addEventListener("mouseout",cancel);

el.addEventListener("touchend",cancel);

el.addEventListener("touchcancel",cancel);

}

})

現在可以在Vue組件里使用了: