微信小程序vs钉钉小程序 笔记

封装API返回值
微信小程序
onLoad: function (options) {
    console.log(this.getPhoneType())
  },
  getPhoneType(){
    var result = ""
    wx.getSystemInfo({
      success(res) {
        console.log(res)
        result = res
      }
    })
    return result;
  },
打印结果图

打印结果图

钉钉小程序
 onLoad: function (options) {
    console.log(this.getPhoneType())
  },
  getPhoneType(){
    var result = ""
    dd.getSystemInfo({
      success(res) {
        console.log(res)
        result = res
      }
    })
    return result;
  },
打印结果图

打印结果图

结果显示 钉钉封装api 拿不到异步返回值,所以想到promise
function getPhoneType() {
	return new Promise(function(resolve, reject) {
		dd.getSystemInfo({
			success: (res) => {
				console.log(res)
				var phoneType = res.platform
				resolve(phoneType)
			}
		})
	})
}
getPhoneType().then((res)=>{
   console.log(res)
 })
延伸问题 :循环异步请求,得到最终结果
解决:async await
async function handlePersonList(personList) {
	var list = [];
	for(var i = 0; i < personList.length; i++) {
		var personId = personList[i].personId
		let res = await new Promise((resolve, reject) => {
			dd.httpRequest({
				url: urls,
				method: 'get',
				header: getApp().globalData.header,
				success: function(res) {
					if(res.data.errcode == 0) {
                         var data =  res.data;
						resolve(data)
					}
				},
				fail: function(res) {
					console.log(res)
					reject(res)
				}
			})
		})
		list.push(res)
	}
 console.log(list)
 return list
}

钉钉笔记系列
  1. .蓝牙监测问题 连接蓝牙发送指令2次以上 监测事件会发生俩次回调 解决监测前先关闭再打开,否则收到数据会重复
dd.offBLECharacteristicValueChange(); // 关闭蓝牙监测器
dd.onBLECharacteristicValueChange...
  1. 蓝牙真机调试 搜索蓝牙特征值 ios 大写 安卓小写 (华为) 微信就都是小写
dd.getBLEDeviceServices({ // 获取蓝牙设备服务
		deviceId: mac,
		success: (res) => {
			var services = res.services;
			for(var k = 0; k < services.length; k++) {
				var sid = services[k].serviceId
				if(sid.indexOf("abf0") >= 0 || sid.indexOf("ABF0") >= 0) {
					dd.getBLEDeviceCharacteristics({
						deviceId: mac,
						serviceId: sid,
						success: (res) => {
							var characteristics = res.characteristics
							for(var j = 0; j < characteristics.length; j++) {
								var uuid = characteristics[j].characteristicId
								if(uuid.indexOf("abf3") >= 0 || uuid.indexOf("ABF3") >= 0) { //发送的状态码               
									util.bleData(sendData, mac, sid, uuid); // uuid  就是 cid
								}
								if(uuid.indexOf("abf2") >= 0 || uuid.indexOf("ABF2") >= 0) { //接受的状态码												
									dd.notifyBLECharacteristicValueChange({
										deviceId: mac,
										serviceId: sid,
										characteristicId: uuid,
										state: true,
										success: (res) => {
											console.log("notify开启")
											that.checkBlue()
										},
										fail: (res) => {
											dd.hideLoading()
											dd.showToast({
												content: "启用notify功能失败"
											})
										},
									});
								}
							}
						},
						fail: (res) => {
							util.closeBlue()
							dd.hideLoading()
							dd.showToast({
								content: "获取蓝牙设备特征值失败,请重新操作"
							})
						},
					});
				}
			}
		},
		fail: (res) => {
			util.closeBlue()
			dd.hideLoading()
			dd.showToast({
				content: "获取蓝牙设备服务失败,请重新操作"
			})
		},
	});
  1. dd.showToast 慎用,这玩意回调有时候很费劲,尽量不用回调
  2. dd.navigateTo 存在页面栈 最多5个
  3. 封装方法 用promise async awiat 异步请求 循环中异步请求 好用
  4. 蓝牙交互失败原因总结
  1. 地理位置太长 超出限制 导致前端收到蓝牙回调数据解密失败
  2. 前端和硬件密钥不匹配 导致收不到蓝牙回调 硬件解密失败
  1. dd.navigateTo 和 dd.redirectTo 不允许跳转到 tabbar 页面;如果需要跳转到 tabbar 页面,请使用 dd.switchTab
  2. substring(start ,stop ) 方法返回的子串包括 start 处的字符,但不包括 stop 处的字符。
    如果参数 start 与 stop 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。
    如果 start 比 stop 大,那么该方法在提取子串之前会先交换这两个参数。与 slice() 和 substr() 方法不同的是,substring() 不接受负的参数。
  3. 调试打开蓝牙 原因 钉钉蓝牙权限没打开
  4. data-item event.target.dataset.item
  5. 获取页面栈
let pages = getCurrentPages(); //当前页面栈								
  dd.navigateBack({
	delta: pages.length									
})												
return false
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值