ウィーチャットアプレットAPIはPromiseのために非同期プログラミングを簡略化する操作方法である。


WeChatアプレットを非同期APIからPromiseに変換する。Promiseを使って非同期操作をするのはどれぐらい便利ですか?誰が使いますか?
WeChatの公式はPromise APIを提供していません。非同期的な操作をしています。また、公式APIは非同期的なものが多く、これによって、複数の非同期プログラムが何重にもリピートされます。コードが複雑になると、パソコンを壊したくなります。
そこで、一般的なツールを書いて、WeChat公式の非同期APIをPromiseに変えて、非同期的な操作を処理しやすいです。
このように使ってもいいです。
転化後の方法を準備して露出する。

// /utils/wx-promise.js
import toPromise from '/module/to-promise/src/index'
const toPromiseWx = toPromsie(wx)
export const request = toPromiseWx('requset')
export const getLocation = toPromiseWx('getLocation')
export const setStorage = toPromiseWx('setStorage')
//export              API
他のファイルで使う
アプリ.jsで使用します。

//App.js
import { request } from './utils/wx-promise.js'

App({
 onLanuch: () => {
  request({ url: 'http://api.yourapi.com' })
   .then(() => {
    //     
   })
   .then(() => {
    //     
   })
 }
})
他のpageで使用します。

// /page/index.js
import { request, setStorage } from '../utils/wx-promise.js'

page({
 onLoad: () => {
  request({ url: 'http://api.yourapi.com' })
   .then(() => {
    //     
   })
   .then(() => {
    //     
   })
 },
 onHide: () => {
  setStorage({
   key: 'yourkey',
   data: 'yourvalue'
  })
   .then(() => {
    //    
   })
   .then(() => {
    //    
   })
 }
})
プロジェクト住所:to-promise
他にもっと具体的な使い方があります。READMEを直接貼り付けました。to-promiseは、WeChatアプレットを変換するための非同期APIをPromiseのためのツールライブラリである。
利点:
小さいプログラムの非同期のプログラミングが何度も繰り返して持ってくる多すぎる回転を免れて論理がはっきりしないことを招いて、紙面が長すぎるなどの問題。
Promiseの非同期プログラムの特徴により、チェーン操作をサポートし、同期のように非同期的に書く。
変換されたAPIは、WeChatの公式APIとほぼ同じである。
使用方法:
インストール
プロジェクトのルートディレクトリ/moduleにgitをインストールして、

git clone https://github.com/tornoda/to-promise
             :/module
          
import toPromise from '/module/to-promise/src/index'
        (wx)   ,         API
const toPromiseWx = toPromise(wx)
          API
//apiName        ,  wx.request()    
const request = toPromiseWx('request')
//    request  
例:

import toPromise from '/module/to-promise/src/index'
//  wx.getStorage()
const getStorage = toPromsie(wx)('getStorage') 
//  
getStorage({ key: 'test' })
 .then(
  (res) => {
   //res   wx.getStorage({ success: (res) => {} })  res   
   //res = {data: 'keyValue'}
   console.log(res.data)//     storage key   value
   return res.data//              api,        
  },
  (err) => {
   //err   wx.getStorage({ success: (err) => {} })  err   
   throw err
  }
 )
Promiseオブジェクトの使用については、Promiseを参照してください。
API
toPromise(global)
パラメータ
(wx):wxグローバルオブジェクト。つまりtoPromise(wx)はこう呼びます。
戻る
(function):パラメータは、プログラム非同期の方法名です。関数のパラメータと戻り値は以下のような関数を返します。
パラメータ:(object)は、wxウィジェット非同期方法におけるパラメータ(OBJECT)に対応して、successとfailを除いたオブジェクトです。たとえば:
公式API wx.get Location(OBJECT)のOBJECTは、以下の属性を受け取ります。type altitude success fail completteeは、(success fail)を除いて、type altitude completteeとなります。
は、未知の状態のPromiseオブジェクトを返し、オブジェクトに対して呼び出します。OFulfilledは成功後に呼び出すコールバック関数であり、パラメータは戻り値であり、Onerejecedは要求失敗後のコールバック関数であり、パラメータは戻りエラー情報である。
簡単に言えば、

const getLocation = toPromiseWx('getLocation')
getLocation({
 type: 'wgs84',
 altitude: true,
 complete: () => { console.log('to-promsise is awesome') }
}).then(
 (res) => {//dosomething if succeed},
 (err) => {//dosomething if failed}
)
以下の公式呼び出しと等価

wx.getLocation({
 type: 'wgs84',
 altitude: true,
 complete: () => { console.log('to-promsise is awesome') },
 success: (res) => {//dosomething if succeed},
 fail: (err) => {//dosomething if failed}
})
アプリケーションの例
  • 単一非同期呼び出しは、APIの最後の
  • を参照してください。
  • は、非同期的な動作で呼び出され、次の呼び出しごとに前回の戻りの結果を使用する。
  • 例えば、GPS情報を取得したら、GPS情報によって気象情報を取得し、気象情報を取得したらすぐにlocal Storrageに保存します。
    
    import toPromise from '/module/to-promise/src/index'
    const toPromiseWx = toPrmise(wx)
    //    
    const getLocation = toPromiseWx('getLocation')
    const request = toPromiseWx('request')
    const setStorage = toPromiseWx('setStorage')
    //     
    getLocation() //      
     .then(
      (res) => { //          ,res     
       //  res        ,      res,    
       return Promise.resolve(res) //  
      },
      (err) => { //            ,err     
       //    
       return Promise.resolve(err) //  
      }
     )
     .then(
      (res) => { //            ,      
       return request({ url: 'http://api.weather.com'}) //    pending     Promise
      }
     )
     .then(
      (res) => { //         storage   
       setStorage({
        key: 'test',
        data: 'res'
       })
      },
      (err) => {
       //           ,err            
      }
     )
    公式のAPIを使用して上記のロジックを書くと、コードはこうなります。
    
    wx.getLocation({
     success: (res) => {
      //some transformation with res
      wx.request({
       url: 'http://api.weather.com',
       success: (res) => {
        wx.setStorage({
         success: () => {
          //do something
         },
         fail: (err) => {
          //do something if err happend
         }
        })
       },
       fail: (err) => {
        //do something if err happend
       }
      })
     },
     fail: (err) => {
      //do something if err happend
    })
    //    ,        ,     
    締め括りをつける
    以上述べたのは小编が皆さんに绍介したマイクロクレジットのプログラムです。ここでも私たちのサイトを応援してくれてありがとうございます。