微信小程序的同步操作


小程序里,大多數操作都是異步操作,一些重要的操作,如從網上獲取重要變量值,必須要保證有值,后續操作才有意義。但異步操作,又必須把處理放到回調中,代碼可讀性降低,而且和大多數正常邏輯相背。

折騰了兩天,試了一些方法,記錄一下:

1、最簡單,用while循環等待,發現基本上卡死

2、靈機一動,用showToast自帶的超時功能,循環等待,也不行。因為showtoast是異步執行的。其他的showModel都是異步執行的,顯示了彈窗后,代碼仍然會向后執行的。

3、網上找到,用Promise,太復雜,不想這么做

最后,用這個方式初步解決,在用數據前,判斷變量是否存在,如果沒有,則顯示提示,退出,並在一定時間后重新進入本函數(onShow):

    console.log("xunhuan", app.tags)
    if (app.tags.length == 0) {
      wx.showToast({
        title: '正在下載數據!',
        image: "/remind.png",
        duration: 500
      })
      console.log("jieshu", app.tags)
      setTimeout(this.onShow, 500)
      return
    }
    console.log("after", app.tags)

 

但在每個地方都放這么多代碼,太難看。想着在app.js里面,onShow的地方加一個,結果還是不行。因為即使在這里循環檢查,但由於異步執行,代碼仍然會正常執行到具體頁面。看來,還得把檢測代碼放到具體處理中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM