国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 熱點 > 微信 > 正文

詳解關于微信setData回調函數中的坑

2024-07-22 01:19:03
字體:
來源:轉載
供稿:網友

最近在做錄音功能,需求大體是這樣的:點擊開始錄音按鈕,頁面狀態變為錄音中,然后開始錄音。

不過偉大的測試同學發現了一個問題:當快速的連續點擊開始錄音按鈕時,會觸發多次開始錄音的事件,這樣在結束錄音時就仍然會有一個正在錄音中的標識,像這樣:

下面開始曲折的修復之路:

最開始的代碼是這樣的:

Page({ /**  * 生命周期函數--監聽頁面加載  */ onLoad: function(options) {  // 初始化錄音管理器  this.recorderManager = wx.getRecorderManager()  // 錄音開始事件  this.recorderManager.onStart(() => {     }) }, /**  * 錄音按鈕點擊事件  */ tapRecordBtn: function() {  this.setData({   // 切換頁面顯示  }, () => {   // 開始錄音   this.recorderManager.start({})  }) },})

這時我的猜測是:頁面重新渲染之前,按鈕還是顯示狀態,所以還能被點擊。

那既然這樣,就加個標識,在一次點擊之后,到頁面重新渲染之前,都不能再次點擊就好了,代碼如下:

Page({ /**  * 生命周期函數--監聽頁面加載  */ onLoad: function(options) {  // 初始化錄音管理器  this.recorderManager = wx.getRecorderManager()  // 錄音開始按鈕點擊標識  this.isRecordBtnClicked = false  // 錄音開始事件  this.recorderManager.onStart(() => {  }) }, /**  * 錄音按鈕點擊事件  */ tapRecordBtn: function() {  // 如果錄音按鈕已被點擊(錄音即將開始),則不會再次觸發開始錄音事件  if (this.isRecordBtnClicked) {   return  }  this.isRecordBtnClicked = true  this.setData({   // 切換頁面顯示  }, () => {   this.isRecordBtnClicked = false   // 開始錄音   this.recorderManager.start({})  }) },})

想法是好的,不過并沒有實現想要的效果。還是可以被多次點擊。

于是在多次實驗之后,改為如下的方式(可行):

Page({ /**  * 生命周期函數--監聽頁面加載  */ onLoad: function(options) {  // 初始化錄音管理器  this.recorderManager = wx.getRecorderManager()  // 錄音開始按鈕點擊標識  this.isRecordBtnClicked = false  // 錄音開始事件  this.recorderManager.onStart(() => {   // 將錄音按鈕的點擊狀態在錄音開始時修改   this.isRecordBtnClicked = false  }) }, /**  * 錄音按鈕點擊事件  */ tapRecordBtn: function() {  // 如果錄音按鈕已被點擊(錄音即將開始),則不會再次觸發開始錄音事件  if (this.isRecordBtnClicked) {   return  }  this.isRecordBtnClicked = true  this.setData({   // 切換頁面顯示  }, () => {   // 開始錄音   this.recorderManager.start({})  }) },})

將按鈕的點擊狀態在錄音開始事件中進行重置,就可以解決這個問題了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吉首市| 阳信县| 彰武县| 白银市| 资源县| 梁山县| 霍邱县| 汪清县| 云南省| 河津市| 芜湖县| 张家界市| 涪陵区| 嵩明县| 亳州市| 台湾省| 广昌县| 青田县| 衢州市| 榆社县| 巩义市| 灵石县| 喜德县| 永嘉县| 丹巴县| 巴彦淖尔市| 孟津县| 堆龙德庆县| 宜兰市| 运城市| 孟州市| 南汇区| 晋江市| 西华县| 通辽市| 古浪县| 西乌珠穆沁旗| 松江区| 南溪县| 山丹县| 芒康县|