开发过程中问题记录
# 小程序
## 如何等待异步读取完成?
解决:使用 async await
```js
nfcA.connect({
success: async function (res) {
console.log('设备已连接', res)
var password = new Uint8Array([0x11, 0x22, 0x33, 0x44]);
let nfc_ndef = new NFC_NDEF.NFC_NDEF(ndef_adapter,nfcA, password, aid)
// var data = nfc_ndef.SetPassword();
var data = await nfc_ndef.Read() ;
console.log("异步暂停");
console.log(data);
// nfc_ndef.Write(data)
},
fail: function (err) {
console.log('设备联接错误', err);
}
});
```
```
const nfcIsConnected = option => {
return new Promise((resolve, reject) => {
nfcA.isConnected({
success: resolve,
fail: reject,
})
})
}
nfcIsConnected()
.then(res => {
console.log("设备已连接", res)
}).catch(err => {console.log('设备连接失败', err),reject(err)})
```
[小程序中的异步回调问题](https://zhuanlan.zhihu.com/p/112147618#:~:text=%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E4%B8%AD%E6%9C%89%E5%A4%A7%E9%87%8F%E6%8E%A5%E5%8F%A3%E6%98%AF%E5%BC%82%E6%AD%A5%E8%B0%83%E7%94%A8%EF%BC%8C%E6%AF%94%E5%A6%82%20wx.login%20%28%29%20%E3%80%81%20wx.request%20%28%29%20%E3%80%81%20wx.getUserInfo,%28%29%20%E3%80%81%20fail%20%28%29%20%E5%92%8C%20complete%20%28%29%20%E4%BD%9C%E4%B8%BA%E5%BC%82%E6%AD%A5%E8%B0%83%E7%94%A8%E4%B8%8D%E5%90%8C%E6%83%85%E5%86%B5%E4%B8%8B%E7%9A%84%E5%9B%9E%E8%B0%83%E3%80%82)
[有用参考](https://juejin.cn/post/6844903766064381966)
## 自定义组件具有表单提交能力
使用内置 behaviors
wx://form-field-group
使自定义组件有类似于表单控件的行为。 form 组件可以识别这些自定义组件,并在 submit 事件中返回组件的字段名及其对应字段值。
组件中包含以下代码:
```language
Component({
behaviors: ['wx://form-field'],
))
```
使 form 组件可以识别到这个自定义组件内部的 button , 如果自定义组件内部有设置了 form-type 的 button ,它将被组件外的 form 接受。 例如,页面的结构如下:
```language
<form bindsubmit="submit">
<input name="name" placeholder="请输入名字"></input>
<custom-comp></custom-comp>
</form>
```
组件 custom-comp 自身结构如下:
```language
<button form-type="submit">submit</button>
```
此时点击组件内的 button ,将触发 form 的 submit 事件。