위 챗 애플 릿 동기 화 비동기 해결 방법
작은 프로그램 에서 함수 체 가 완성 되 지 않 았 고 다음 함수 가 실행 되 기 시 작 했 으 며 두 함수 사이 에 전 삼 이 필요 합 니 다.그것 은 위 챗 애플 릿 함수 가 비동기 로 실행 되 기 때문이다.그러나 위 챗 애플 릿 은 ES6 의 promise 특성 지원 을 추 가 했 고,위 챗 애플 릿 새 버 전에 서 promise 의 지원 을 제 거 했 으 며,스스로 ES6 의 promise 특성 을 실현 하기 위해 제3자 라 이브 러 리 를 사용 해 야 한다.
WxService.js
import Tools from 'Tools'
import es6 from '../assets/plugins/es6-promise'
class Service {
constructor() {
this.__init()
}
/**
* __init
*/
__init() {
this.tools = new Tools
this.__initDefaults()
this.__initMethods()
}
/**
* __initDefaults
*/
__initDefaults() {
//
this.noPromiseMethods = [
'stopRecord',
'pauseVoice',
'stopVoice',
'pauseBackgroundAudio',
'stopBackgroundAudio',
'showNavigationBarLoading',
'hideNavigationBarLoading',
'createAnimation',
'createContext',
'hideKeyboard',
'stopPullDownRefresh',
]
// wx
this.instanceSource = {
method: Object.keys(wx)
}
}
/**
* wx , , promise
*/
__initMethods() {
for (let key in this.instanceSource) {
this.instanceSource[key].forEach((method, index) => {
this[method] = (...args) => {
// wx.on , Sync
if (this.noPromiseMethods.indexOf(method) !== -1 || method.substr(0, 2) === 'on' || /\w+Sync$/.test(method)) {
return wx[method](...args)
}
return this.__defaultRequest(method, ...args)
}
})
}
/**
* ,
* @param {String} url
* @param {Object} params
*/
this.navigateTo = (url, params) => {
const $$url = this.tools.buildUrl(url, params)
return new es6.Promise((resolve, reject) => {
wx.navigateTo({
url: $$url,
success: res => resolve(res),
fail: res => reject(res),
})
})
}
/**
* ,
* @param {String} url
* @param {Object} params
*/
this.redirectTo = (url, params) => {
const $$url = this.tools.buildUrl(url, params)
return new es6.Promise((resolve, reject) => {
wx.redirectTo({
url: $$url,
success: res => resolve(res),
fail: res => reject(res),
})
})
}
}
/**
* wx API
* @param {String} method
* @param {Object} obj
*/
__defaultRequest(method = '', obj = {}) {
return new es6.Promise((resolve, reject) => {
obj.success = (res) => resolve(res)
obj.fail = (res) => reject(res)
wx[method](obj)
})
}
}
export default Service
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
OpenSSL 생 성 ssl 인증서텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.