成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

微信小程序:防止多次點(diǎn)擊跳轉(zhuǎn)(函數(shù)節(jié)流)

miqt / 3518人閱讀

摘要:這樣,瘋狂點(diǎn)擊按鈕也只會(huì)觸發(fā)一次。出現(xiàn)這種情況的原因是返回的是一個(gè)新函數(shù),已經(jīng)不是最初的函數(shù)了。最后的函數(shù)如下返回新的函數(shù)將和參數(shù)傳給原函數(shù)再次點(diǎn)擊按鈕和都有了參考輕松理解函數(shù)節(jié)流和函數(shù)防抖源代碼的頁(yè)面

場(chǎng)景

在使用小程序的時(shí)候會(huì)出現(xiàn)這樣一種情況:當(dāng)網(wǎng)絡(luò)條件差或卡頓的情況下,使用者會(huì)認(rèn)為點(diǎn)擊無(wú)效而進(jìn)行多次點(diǎn)擊,最后出現(xiàn)多次跳轉(zhuǎn)頁(yè)面的情況,就像下圖(快速點(diǎn)擊了兩次):

解決辦法

然后從 輕松理解JS函數(shù)節(jié)流和函數(shù)防抖 中找到了解決辦法,就是函數(shù)節(jié)流(throttle):函數(shù)在一段時(shí)間內(nèi)多次觸發(fā)只會(huì)執(zhí)行第一次,在這段時(shí)間結(jié)束前,不管觸發(fā)多少次也不會(huì)執(zhí)行函數(shù)。

/utils/util.js:

function throttle(fn, gapTime) {
    if (gapTime == null || gapTime == undefined) {
        gapTime = 1500
    }

    let _lastTime = null
    return function () {
        let _nowTime = + new Date()
        if (_nowTime - _lastTime > gapTime || !_lastTime) {
            fn()
            _lastTime = _nowTime
        }
    }
}

module.exports = {
  throttle: throttle
}

/pages/throttle/throttle.wxml:

/pages/throttle/throttle.js

const util = require("../../utils/util.js")

Page({
    data: {
        text: "tomfriwel"
    },
    onLoad: function (options) {

    },
    tap: util.throttle(function (e) {
        console.log(this)
        console.log(e)
        console.log((new Date()).getSeconds())
    }, 1000)
})

這樣,瘋狂點(diǎn)擊按鈕也只會(huì)1s觸發(fā)一次。

但是這樣的話出現(xiàn)一個(gè)問(wèn)題,就是當(dāng)你想要獲取this.data得到的thisundefined, 或者想要獲取微信組件button傳遞給點(diǎn)擊函數(shù)的數(shù)據(jù)e也是undefined,所以throttle函數(shù)還需要做一點(diǎn)處理來(lái)使其能用在微信小程序的頁(yè)面js里。

出現(xiàn)這種情況的原因是throttle返回的是一個(gè)新函數(shù),已經(jīng)不是最初的函數(shù)了。新函數(shù)包裹著原函數(shù),所以組件button傳遞的參數(shù)是在新函數(shù)里。所以我們需要把這些參數(shù)傳遞給真正需要執(zhí)行的函數(shù)fn

最后的throttle函數(shù)如下:

function throttle(fn, gapTime) {
    if (gapTime == null || gapTime == undefined) {
        gapTime = 1500
    }

    let _lastTime = null

    // 返回新的函數(shù)
    return function () {
        let _nowTime = + new Date()
        if (_nowTime - _lastTime > gapTime || !_lastTime) {
            fn.apply(this, arguments)   //將this和參數(shù)傳給原函數(shù)
            _lastTime = _nowTime
        }
    }
}

再次點(diǎn)擊按鈕thise都有了:

參考

輕松理解JS函數(shù)節(jié)流和函數(shù)防抖

源代碼

tomfriwel/MyWechatAppDemo 的throttle頁(yè)面

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/92799.html

相關(guān)文章

  • 信小程序開(kāi)發(fā)中遇到的問(wèn)題及解決辦法(三)

    摘要:資料整理關(guān)于配置微信小程序頁(yè)面附關(guān)于微信搜索小程序內(nèi)頁(yè)面的功能,只能在線上環(huán)境有用,而且沒(méi)有提供測(cè)試的渠道。二微信小程序激勵(lì)視頻廣告接入微信視頻廣告指引截圖具體使用注意激勵(lì)視頻廣告組件是一個(gè)原生組件,層級(jí)比普通組件高。 大綱:根據(jù)近期我在小程序開(kāi)發(fā)中接到的需求,總結(jié)一下下面四個(gè)開(kāi)發(fā)需求所遇到的問(wèn)題: 1、關(guān)于微信現(xiàn)已開(kāi)放小程序內(nèi)搜索(sitemap 配置);2、微信小程序的激勵(lì)視頻廣告...

    Lowky 評(píng)論0 收藏0
  • 信小程序開(kāi)發(fā)中遇到的問(wèn)題及解決辦法(三)

    摘要:資料整理關(guān)于配置微信小程序頁(yè)面附關(guān)于微信搜索小程序內(nèi)頁(yè)面的功能,只能在線上環(huán)境有用,而且沒(méi)有提供測(cè)試的渠道。二微信小程序激勵(lì)視頻廣告接入微信視頻廣告指引截圖具體使用注意激勵(lì)視頻廣告組件是一個(gè)原生組件,層級(jí)比普通組件高。 大綱:根據(jù)近期我在小程序開(kāi)發(fā)中接到的需求,總結(jié)一下下面四個(gè)開(kāi)發(fā)需求所遇到的問(wèn)題: 1、關(guān)于微信現(xiàn)已開(kāi)放小程序內(nèi)搜索(sitemap 配置);2、微信小程序的激勵(lì)視頻廣告...

    elina 評(píng)論0 收藏0
  • 信小程序開(kāi)發(fā)中遇到的問(wèn)題及解決辦法(三)

    摘要:資料整理關(guān)于配置微信小程序頁(yè)面附關(guān)于微信搜索小程序內(nèi)頁(yè)面的功能,只能在線上環(huán)境有用,而且沒(méi)有提供測(cè)試的渠道。二微信小程序激勵(lì)視頻廣告接入微信視頻廣告指引截圖具體使用注意激勵(lì)視頻廣告組件是一個(gè)原生組件,層級(jí)比普通組件高。 大綱:根據(jù)近期我在小程序開(kāi)發(fā)中接到的需求,總結(jié)一下下面四個(gè)開(kāi)發(fā)需求所遇到的問(wèn)題: 1、關(guān)于微信現(xiàn)已開(kāi)放小程序內(nèi)搜索(sitemap 配置);2、微信小程序的激勵(lì)視頻廣告...

    voyagelab 評(píng)論0 收藏0
  • 優(yōu)雅解決信小程序授權(quán)登錄需要button觸發(fā)

    摘要:優(yōu)雅解決微信小程序授權(quán)登錄需要觸發(fā)聊一聊最近的一個(gè)項(xiàng)目,這個(gè)項(xiàng)目是一個(gè)收書(shū)售書(shū)的小程序,有商城專(zhuān)欄信息發(fā)布論壇等功能。微信不會(huì)把的有效期告知開(kāi)發(fā)者。 優(yōu)雅解決微信小程序授權(quán)登錄需要button觸發(fā) 聊一聊最近的一個(gè)項(xiàng)目,這個(gè)項(xiàng)目是一個(gè)收書(shū)、售書(shū)的小程序,有商城、專(zhuān)欄、信息發(fā)布論壇等功能。雖然不是面向所有用戶(hù),但要求無(wú)論用戶(hù)是否授權(quán)都皆可使用,但同時(shí)也要求部分功能對(duì)不授權(quán)的用戶(hù)限制開(kāi)放。...

    plus2047 評(píng)論0 收藏0
  • 20181012信小程序填坑手冊(cè)~

    摘要:全屏蒙版彈窗遮不住的層級(jí)還是很高的,當(dāng)出現(xiàn)全屏蒙版彈窗時(shí),是無(wú)法蓋住的,可以調(diào)用微信的,不過(guò)需要注意兼容低版本在類(lèi)設(shè)置的顏色并沒(méi)有變化。 從6月份開(kāi)始到現(xiàn)在,寫(xiě)小程序?qū)⒔?個(gè)月了開(kāi)發(fā)時(shí)給自己埋了不少坑~給大家分享下我的填坑經(jīng)驗(yàn)~~ 開(kāi)發(fā)部分 1.小程序的組件修改不能觸發(fā)頁(yè)面刷新?需要在父級(jí)文件上保存下才會(huì)觸發(fā)(使用wepy開(kāi)發(fā)) 2.接口請(qǐng)求出現(xiàn)的問(wèn)題?記得勾選調(diào)試開(kāi)發(fā)工具上 不校驗(yàn)...

    劉玉平 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<