# 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.服務器選什么系統更好?
- 十六.常用工具、軟件網站推薦