微信小程序各种判空

微信小程序各种判空,第1张

说明:typeof 返回的是字符串,有六种可能:"number"、"string"、"boolean"、"object"、"function"、"undefined"

说明:NaN 表示非法,如果把 NaN 与任何值(包括其自身)相比得到的结果均是 false,所以要判断某个值是否是 NaN,不能使用 == 或 === 运算符。

提示:isNaN() 函数通常用于检测 parseFloat() 和 parseInt() 的结果,以判断它们表示的是否是合法的数字。当然也可以用 isNaN() 函数来检测算数错误,比如用 0 作除数的情况。

说明:null==undefined

提示:一般不那么区分就使用这个足够。

让一个对象一开始设为null,通过判断是否为null即可判断

if(options){ //存在 }else{ //不存在 }即可

一、使用来自不同页面的函数

函数写在util.js页面

function formatTime(date) {

var year = date.getFullYear()

var month = date.getMonth() + 1

var day = date.getDate()

var hour = date.getHours()

var minute = date.getMinutes()

var second = date.getSeconds()

return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')

}

function formatNumber(n) {

n = n.toString()

return n[1] ? n : '0' + n

}

module.exports = {

formatTime: formatTime,

}

使用函数

图片描述

图片描述

二、使用相同页面的函数

get_productInformation: function () {

。。。。

},

getZones:function(){

this.get_productInformation

},

三、使用app.js内定义的函数

app.js代码

//app.js

App({

onLaunch: function() {

//调用API从本地缓存中获取数据

var logs = wx.getStorageSync('logs') || []

logs.unshift(Date.now())

wx.setStorageSync('logs', logs)

},

get_a_test:function(){

console.log('this is a test')

},

getUserInfo: function(cb) {

var that = this

if (this.globalData.userInfo) {

typeof cb == "function" &&cb(this.globalData.userInfo)

} else {

//调用登录接口

wx.getUserInfo({

withCredentials: false,

success: function(res) {

that.globalData.userInfo = res.userInfo

typeof cb == "function" &&cb(that.globalData.userInfo)

}

})

}

},

globalData: {

userInfo: null,

college_change:false

}

})

在其他页面中使用

图片描述

针对小程序的异步

因为懒得去配置async 和await的环境了,wx.getStorageSync是同步的就

直接了在这个基础上了一个重入锁的js来实现同步

/***本类主要用来实现同步*/

const lockerKey = "wxlocker"

var lockerContainer={}

/**

* 加锁函数

* 参数:锁名

*

*/

function lock(lockName){

var obj= wx.getStorageSync(lockerKey)

console.log(111)

console.log(obj)

if (typeof obj === "undefined" || obj==null||obj==''){

  lockerContainer.lockName = 1

  wx.setStorageSync(lockerKey, lockerContainer)

}else{

  lockerContainer = obj

  if (typeof lockerContainer.lockName !== "undefined" &&lockerContainer.lockName != null &&lockerContainer.lockName != ''){

    lockerContainer.lockName = lockerContainer.lockName +1

  }else{

    lockerContainer.lockName = 1

  }

  //更新锁

  wx.setStorageSync(lockerKey, lockerContainer)

}

}

/**

* 解锁函数

* 参数:锁名

*

*/

function unlock(lockName){

  var obj = wx.getStorageSync(lockerKey)

  console.log(222)

  console.log(obj)

  if (typeof obj === "undefined" || obj == null || obj == '') {//没有锁过

    return

  } else {

    lockerContainer = obj

    if (typeof lockerContainer.lockName !== "undefined" &&lockerContainer.lockName != null &&lockerContainer.lockName != '') {

      if (lockerContainer.lockName <=0){

        lockerContainer.lockName=0

        return

      }else{

        lockerContainer.lockName = lockerContainer.lockName - 1

      }

    } else {

      return

    }

    //更新锁

    wx.setStorageSync(lockerKey, lockerContainer)

    obj = wx.getStorageSync(lockerKey)

    console.log(obj)

  }

}

/**

* 是否被锁函数

* 参数:锁名

* 返回值:boolean

*/

function isLockedBy(lockName){

  var obj = wx.getStorageSync(lockerKey)

  if (typeof obj === "undefined" || obj == null || obj == '') {//没有锁过

    return false

  } else {

    lockerContainer = obj

    if (typeof lockerContainer.lockName !== "undefined" &&lockerContainer.lockName != null &&lockerContainer.lockName != '') {

      if (lockerContainer.lockName >0) {

        return true

      } else {

        return false

      }

    } else {

      return false

    }

  }

}

/**

* 等待函数(等待100*millseconds后自动解除)

* 参数:锁名,间隔毫秒,等待解锁完成后的回调函数

*

*/

function wait(lockName, millseconds,callback){

  //100次监控后清空锁

  var expireTime = 0

  var timer =setInterval(function () {

    console.log("wait " + millseconds)

    if (!isLockedBy(lockName)){

      clearInterval(timer)

      callback()

    }else{//被锁住了

      expireTime++

      if (expireTime >100) {

        lockerContainer.lockName=null

        //清空锁

        wx.setStorageSync(lockerKey, lockerContainer)

        clearInterval(timer)

      }

    }

  }, millseconds)

}

module.exports = {

  wait: wait,

  unlock: unlock,

  lock: lock

}

用法,加锁多少次就要解锁多少次

lock("mylock")

lock("mylock")

unlock("mylock")

unlock("mylock")

wait("mylock",1000,callback)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/yw/11326093.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存