一级片大奶子_色又黄又爽18禁免费视频_热久久久久久久_久久久精品一区二区_日韩av不卡在线播放_精品国内自产拍在线观看视频

商城系統 注冊

把微信小程序異步API為Promise,簡化異步編程

2018-08-15|HiShop
導讀:把微信 小程序 異步API轉化為Promise。用Promise處理異步操作有多方便,誰用誰知道。 微信官方沒有給出Promise API來處理異步操作,而官方API異步的又非常多,這使得多異步編程會層層回調...

把微信小程序異步API轉化為Promise。用Promise處理異步操作有多方便,誰用誰知道。
微信官方沒有給出Promise API來處理異步操作,而官方API異步的又非常多,這使得多異步編程會層層回調,代碼一復雜,回調起來就想砸電腦。
于是寫了一個通用工具,把微信官方的異步API轉化為Promise,方便處理(多)異步操作。

把微信小程序異步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

在其他文件中使用
在App.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是一個轉換微信小程序異步API為Promise的一個工具庫

優點:

  1. 避免小程序異步編程多次回調帶來的過多回調導致邏輯不清晰,篇幅過長等問題。
  2. 借助于Promise異步編程特點,支持鏈式操作,像同步一樣寫異步。
  3. 轉化后得API幾乎和微信官方API一樣。

使用方法:

  1. 安裝
  • 使用git安裝到項目根目錄/module,
git clone https://github.com/tornoda/to-promise
  • 或直接下載放入項目目錄下如:/module
  1. 在需要用到的地方引入
import toPromise from '/module/to-promise/src/index'
  1. 綁定微信全局對象(wx)到函數,以便可以取到微信得API
const toPromiseWx = toPromise(wx)
  1. 開始轉化你需要得異步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): 參數(string)為小程序異步方法名。返回一個函數,該函數的參數與返回值如下。

參數:(object) 對應wx小程序異步方法中的參數(OBJECT)除去success與fail后的對象。例如:

官方APIwx.getLocation(OBJECT)的OBJECT接受如下屬性: type altitude success fail complete,那么去除(success fail)后為:type altitude complete。

返回: (pending Promsise) 返回一個未知狀態的Promise對象,在該對象上調用.then(onFulfilled, onRejected)方法來處理對用成功或失敗的情況。onFulfilled為請求成功后調用的回調函數,參數為返回值,onRejected為請求失敗后的回調函數,參數為返回的錯誤信息。

簡單點來說,

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}
})

應用場景舉例

  1. 單次異步調用,參見API最后
  2. 多次異步操作調用,且每下一次調用都會用到前一次返回的結果。
    如:獲得GPS信息后,根據GPS信息獲取天氣信息,取得天氣信息后立馬存入localStorage。
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
})
//層層回調,如果邏輯再復雜點,可能就瘋了

HiShop小程序工具提供多類型商城/門店小程序制作,可視化編輯 1秒生成5步上線。通過拖拽、拼接模塊布局小程序商城頁面,所看即所得,只需要美工就能做出精美商城。更多小程序商店請查看:小程序商店

電話咨詢 預約演示 0元開店
主站蜘蛛池模板: 成人=av免费|欧洲-级毛片内射|国产精品亚洲а∨天堂网不卡|人人干美女|亚洲天堂国产精品|免费一级特黄 | 澳门成免费crm大全|日韩在线精品成人=aV|精品国产一区二区三区成人影院|日韩=av中文无码影院|久久最新金品视频免费播放|国产精品1卡2卡3卡4卡 | 亚洲成人伦理|国产在线一|91超碰碰|小s=ao货水好多真紧h无码视频|久久亚洲精精品中文字幕|欧美日韩午夜精品 | 亚洲视频在线观看一区二区|涩涩资源中文字幕久久婷婷爱|少妇精品无码一区二区三区|69激情网|影音先锋每日=aV色资源站|chin=a中国人妻video | 亚洲=av不卡一区二区三区|日本精品久久无码影院|亚洲福利视频二区|#NAME?|毛片一级做=a爰片性色仙踪林|人妻少妇精品视频一区二区三区 | 欧美乱色伦图片区|精国产品一区二区三区四季综|午夜免费观看视频|女人18毛片水真多免费看|久久久久久免费观看|91精品一 | 人人射影院|日韩免费一区二区三区高清|欧美狠狠|91精品蜜臀在线一区尤物|国产日本韩国在线|无码人妻精品一区二区三区99仓本 | 亚洲春色综合另类网蜜桃|日韩特一级|深夜福利国产精品|欧美黑人大战白嫩在线|久久久精品2019免费观看|#NAME? 日日婷婷夜日日天干|精品一区二区观看|亚洲热热色|一区二区欧美国产|自拍一二区|毛片无限看 | 大胆L少妇BBBBBB流水|欧美操日韩|麻豆视传媒精品=aV|大地资源色婷婷视频在线|亚洲影视一区二区三区|成年男女免费视频在线观看不卡 | 永久免费的啪啪网站免费观看浪潮|#NAME?|被按摩的人妻中文字幕|国产资源在线看|人人看人人射|免费看又黄又爽又猛的视频软件 | 91毛片在线观看|人妻=av无码系列一区二区三区|国产乱在线|西西人体www大胆高清仙踪林|九一在线免费观看|精品国产专区 | 国产一区二区三区怡红院|91自拍.com|国91精品久久久久9999不卡|久久精品国产精品亚洲艾草网|九色精品|亚洲一区二区综合 | tube国产麻豆|w两个世界完整免费观看超清完整|久久久亚洲精品动漫无码|久热久爱免费精品视频在线|国产嫩草在线视频|67149中文无码久久 | #NAME?|欧美暖暖视频|91国内在线|毛多水多www偷窥小便|人妻无码人妻有码中文字幕|少妇人妻精品一区二区三区 | 日本三级韩国三级欧美三级|日韩黄色大片免费看|美国黄色小视频|久久精品国产亚洲=aV麻豆~|中文字幕人成人|一级在线免费 | 久热只有精品|日韩一级片视频|操孕妇逼视频|97精品|视频在线观看一区二区|#NAME? | 中文字幕亚洲码在线|国变精品美女久久久久=av爽|一区在线免费观看|精品91久久|国产精品成人=a片在线播放免费|小12萝裸乳无码 | 日韩在线精品一区|久久久久久视|成人=av一级|欧美一区二区三区视频在线播放|久久久久久久999|色欲人妻综合=a=a=a=a=a=a=a=a网 | 四虎国产精品永久入口|snh48国产大片永久|成年人免费在线观看视频网站|99久久婷婷国产综合精品首页|9977精品视频免费入口|国产日韩欧美精品一区二区 | 冥王星之恋泰剧在线观看|国产亚洲精品=a片久久久|日韩大片免费在线观看|免费无码=aV片在线观看网址|最新精品国偷自产在线|国产偷人激情视频在线观看 | #NAME?|欧美暖暖视频|91国内在线|毛多水多www偷窥小便|人妻无码人妻有码中文字幕|少妇人妻精品一区二区三区 | 日本xxxx裸体xxxx出水|日本成人在线网址|成人午夜福利|亚洲精品高清无码视频|欧美成人看片一区二区|欧美第八页 | 丰满人妻熟妇乱又伦精品|黑白配高清国语免费观看|#NAME?|亚洲视频高清不卡在线观看|99ri=av国产在线观看|丝袜美腿视频一区二区三区 | 九九影院最新理论片|#NAME?|国产精品=a久久久久|高清国产亚洲精品自在久久|xnxx在线观看|性高潮一级片 老汉=av免费一区二区三区|国产又大又黑又粗免费视频|黄大片日本一级在线=a|成年人黄色毛片|亚洲精品一区二区三区免|国产精品91大屁股白浆一区二区 无码国产精品一区二区VR|欧美精品亚洲精品日韩专区v=a|欧美xxx久久|黄在线观看免费|国产草草草|7777kkk亚洲综合欧美网站 五月天色中色|蜜桃精品视频在线|日本特级=aⅴ一级毛片|二区三区4区5区6区人妻|成人毛片软件|#NAME? | 久久精品九九热无码免贵|日本=aⅴ精品一区二区三区|亚洲国产精品一区二区成人片|国产精品91久久|久草=av在线播放|亚洲在线www | 亚洲精品第一页|边吃吃奶边扎下面很紧爽|porno麻豆|五月天婷五月天综合网|国产精品理论在线无码|国产资源网站 | 91视频网国产|粗大猛烈进出高潮视频|精品国产乱码久久久人妻|亚洲精品无码久久毛片波多野吉衣|成人久久免费视频|国产美女自拍 | 成人一区二区三区免费视频|日本=a=a=a=a片毛片免费观蜜桃|在线观看亚洲欧美|日本一夲道无码不卡免费视频|穿乳环蒂环上锁调教老师|国产成人综合一区二区三区 | 国产精品麻豆高潮刺激=a片|国产=aⅴ无码专区亚洲=av|草草在线视频|亚洲日韩精品无码专区加勒比|国产精品激情|成全视频观看免费高清第6季 | 国产精品久久久久久久浪潮网站|亚洲青草视频|乌克兰18极品XX00喷水|#NAME?|亚洲综合在线一区二区三区|国产超碰人人做人人爱ⅴ=a 91精品一区二区三区在线|情侣偷拍在线一区|天堂网在线.www天堂|成人=a毛片免费全部播放|日本国产一区二区|美女被日在线观看 | 97超碰超碰|国产无线乱码一区二三区|国产一区二区日本|亚洲=a=a=a级片|免费看91|一区在线观看视频 | 老司机67194精品线观看|激情久久久|九九热视频在线播放|乱人伦人妻精品一区二区|欧美一区二区三区影视|日本高清不卡在线观看 | 国产人妖在线|国产午夜福利在线播放|亚洲国产成人精品久久久国产成人|高柳の肉嫁动漫在线播放|日韩久久精品一区二区三区|精品偷自拍另类在线观看 | 男女日批免费视频|九九免费观看全部免费视频|日韩精品免费一区二区夜夜嗨|中文字幕在线播放第一页|中国少妇xxxx|欧洲人体超大胆露私视频 | 久久精品国产91|精品不卡高清视频在线观看|毛片网子|操操操日日日|国产福利一|中文字幕色欲=aV亚洲二区 | 欧美人与动人物牲交|国产精品一区hongkongdoll|97国产爽爽爽久久久|久久69国产一区二区蜜臀|成人免费在线视频网址|久久久久国产精品一区二区 | WWW免费视频在线观看播放|欧美日本一道本一区二区|999在线精品视频|国产十日韩十欧美|天堂网中文字幕在线观看|日韩一二三四 | 免费无码又爽又刺激=a片|爽爽影院免费观看|青青视频二区|少妇=av|久久国产操|#NAME? | gogogo高清在线观看中文版二|色老板在线永久免费视频|国产精品美女自拍|不卡网免费理论影院|97碰在线视频|丰满岳乱妇三级高清 | 狠狠色狠狠色狠狠五月|在线看片国产|午夜院线|国产一区二区三区免费观看视频|#NAME?|深夜男人你懂的六月婷婷天堂 | 免费视频99|性高湖久久久久久久久3小时|伦理一国产=a级|人妻少妇伦在线无码专区视频|国产人妻无人性无码秀列|毛片免费看网站 |