# API
小程序开发框架提供丰富的微信原生 API,可以方便的调起微信提供的能力,如获取用户信息,本地存储,支付功能等。详细介绍请参考 [API 文档](https://www.w3cschool.cn/weixinapp/hpm41q8p.html)。
通常,在小程序 API 有以下几种类型:
## 事件监听 API
我们约定,以 on 开头的 API 用来监听某个事件是否触发,如:[wx.onSocketOpen](https://www.w3cschool.cn/weixinapp/weixinapp-network-socket.html),[wx.onCompassChange](https://www.w3cschool.cn/weixinapp/weixinapp-api-campass.html) 等。
这类 API 接受一个回调函数作为参数,当事件触发时会调用这个回调函数,并将相关数据以参数形式传入。
代码示例
~~~
wx.onCompassChange(function (res) {
console.log(res.direction)
})
~~~
## 同步 API
我们约定,以 Sync 结尾的 API 都是同步 API, 如 [wx.setStorageSync](https://www.w3cschool.cn/weixinapp/weixinapp-apidate.html),[wx.getSystemInfoSync](https://www.w3cschool.cn/weixinapp/weixinapp-device.html) 等。此外,也有一些其他的同步 API,如 [wx.createWorker](https://www.w3cschool.cn/weixinapp/weixinapp-eqvm2m8l.html),[wx.getBackgroundAudioManager](https://www.w3cschool.cn/weixinapp/weixinapp-gxae38fm.html) 等,详情参见 API 文档中的说明。
同步 API 的执行结果可以通过函数返回值直接获取,如果执行出错会抛出异常。
代码示例
~~~
try {
wx.setStorageSync('key', 'value')
} catch (e) {
console.error(e)
}
~~~
## 异步 API
大多数 API 都是异步 API,如 [wx.request](https://www.w3cschool.cn/weixinapp/weixinapp-network-request.html),[wx.login](https://www.w3cschool.cn/weixinapp/weixinapp-api-login.html) 等。这类 API 接口通常都接受一个 Object 类型的参数,这个参数都支持按需指定以下字段来接收接口调用结果:
Object 参数说明
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| success | function | 否 | 接口调用成功的回调函数 |
| fail | function | 否 | 接口调用失败的回调函数 |
| complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
| 其他 | Any | \- | 接口定义的其他参数 |
回调函数的参数
success,fail,complete 函数调用时会传入一个 Object 类型参数,包含以下字段:
| 属性 | 类型 | 说明 |
| --- | --- | --- |
| errMsg | string | 错误信息,如果调用成功返回 `${apiName}:ok` |
| errCode | number | 错误码,仅部分 API 支持,具体含义请参考对应 API 文档,成功时为 `0`。 |
| 其他 | Any | 接口返回的其他数据 |
异步 API 的执行结果需要通过 Object 类型的参数中传入的对应回调函数获取。部分异步 API 也会有返回值,可以用来实现更丰富的功能,如 [wx.request](https://www.w3cschool.cn/weixinapp/weixinapp-network-request.html),[wx.connectSocket](https://www.w3cschool.cn/weixinapp/weixinapp-network-socket.html) 等。
代码示例
~~~
wx.login({
success(res) {
console.log(res.code)
}
})
~~~
## 异步 API 返回 Promise
基础库 2.10.2 版本起,异步 API 支持 callback & promise 两种调用方式。当接口参数 Object 对象中不包含 success/fail/complete 时将默认返回 promise,否则仍按回调方式执行,无返回值。
#### 注意事项
1. 部分接口如 downloadFile, request, uploadFile, connectSocket, createCamera(小游戏)本身就有返回值, 它们的 promisify 需要开发者自行封装。
2. 当没有回调参数时,异步接口返回 promise。此时若函数调用失败进入 fail 逻辑, 会报错提示 Uncaught (in promise),开发者可通过 catch 来进行捕获。
3. wx.onUnhandledRejection 可以监听未处理的 Promise 拒绝事件。
代码示例
~~~
// callback 形式调用
wx.chooseImage({
success(res) {
console.log('res:', res)
}
})
// promise 形式调用
wx.chooseImage().then(res => console.log('res: ', res))
~~~
- 惠惠软件-开发自助学习系统
- 一.微信公众号(服务号)申请流程
- 二.申请所需提前准备资料
- 三.认证微信公众号:申请微信小程序流程
- 四.微信小程序安装和开发环境
- 五.微信小程序如何上传、提交审核、发布操作
- 六.微信小程序开发教程手册
- 0.1微信小程序 小程序简介
- 0.2微信小程序 开始第一步
- 0.3微信小程序 小程序代码构成
- 0.4微信小程序 小程序宿主环境
- 0.5微信小程序 小程序协同工作和发布
- 0.6微信小程序 目录结构
- 0.7微信小程序 全局配置
- 0.8微信小程序 页面配置
- 0.9微信小程序 sitemap配置
- 0.10微信小程序 场景值
- 0.11微信小程序 注册小程序
- 0.12微信小程序 注册页面
- 0.13微信小程序 页面生命周期
- 0.14微信小程序 页面路由
- 0.15微信小程序 模块化
- 0.16微信小程序 API
- 0.17微信小程序 运行环境
- 0.18微信小程序 JavaScript支持情况
- 0.19微信小程序 运行机制
- 0.20微信小程序 更新机制
- 0.21微信小程序 广告·Banner 广告
- 0.22微信小程序 安全指引·开发原则与注意事项
- 0.23微信小程序 调试
- 0.24微信小程序 启动性能
- 0.25微信小程序 运行时性能
- 0.26微信小程序 性能分析工具
- 0.27微信小程序 体验评分
- 八.小程序的美工
- 8.1图片大小
- 8.2颜色代码
- 8.3小程序的美工技巧
- 九.微信小程序-定制开发
- 十.微信支付申请流程
- 十一.小程序支付对接流程
- 十二.微信小程序使用中常见问题汇总
- 十二.小程序开发中遇到的问题—汇总
- 十四.小程序问题及解决
- 十五.网站开发定制
- 1.开发定制流程
- 2.搭建网站的过程
- 3.做网站基本费用
- 4.服务器选什么系统更好?
- 十六.常用工具、软件网站推荐