• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
    當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

    微信小程序使用Promise簡(jiǎn)化回調(diào)

    來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:20:09
    文檔

    微信小程序使用Promise簡(jiǎn)化回調(diào)

    微信小程序使用Promise簡(jiǎn)化回調(diào):Promise 是異步編程的一種解決方案,比傳統(tǒng)的解決方案——回調(diào)函數(shù)和事件——更合理和更強(qiáng)大。它由社區(qū)最早提出和實(shí)現(xiàn),ES6 將其寫進(jìn)了語(yǔ)言標(biāo)準(zhǔn),統(tǒng)一了用法,原生提供了Promise對(duì)象。 所謂Promise,簡(jiǎn)單說(shuō)就是一個(gè)容器,里面保存著某個(gè)未來(lái)才會(huì)結(jié)束的事件(
    推薦度:
    導(dǎo)讀微信小程序使用Promise簡(jiǎn)化回調(diào):Promise 是異步編程的一種解決方案,比傳統(tǒng)的解決方案——回調(diào)函數(shù)和事件——更合理和更強(qiáng)大。它由社區(qū)最早提出和實(shí)現(xiàn),ES6 將其寫進(jìn)了語(yǔ)言標(biāo)準(zhǔn),統(tǒng)一了用法,原生提供了Promise對(duì)象。 所謂Promise,簡(jiǎn)單說(shuō)就是一個(gè)容器,里面保存著某個(gè)未來(lái)才會(huì)結(jié)束的事件(

    Promise 是異步編程的一種解決方案,比傳統(tǒng)的解決方案——回調(diào)函數(shù)和事件——更合理和更強(qiáng)大。它由社區(qū)最早提出和實(shí)現(xiàn),ES6 將其寫進(jìn)了語(yǔ)言標(biāo)準(zhǔn),統(tǒng)一了用法,原生提供了Promise對(duì)象。

    所謂Promise,簡(jiǎn)單說(shuō)就是一個(gè)容器,里面保存著某個(gè)未來(lái)才會(huì)結(jié)束的事件(通常是一個(gè)異步操作)的結(jié)果。從語(yǔ)法上說(shuō),Promise 是一個(gè)對(duì)象,從它可以獲取異步操作的消息。Promise 提供統(tǒng)一的 API,各種異步操作都可以用同樣的方法進(jìn)行處理。

    了解什么是 Promise 對(duì)象

    在項(xiàng)目中,會(huì)出現(xiàn)各種異步操作,如果一個(gè)異步操作的回調(diào)里還有異步操作,就會(huì)出現(xiàn)回調(diào)金字塔。

    比如下面這種

    // 模擬獲取code,然后將code傳給后臺(tái),成功后獲取userinfo,再將userinfo傳給后臺(tái)
    // 登錄
    wx.login({
     success: res => {
     let code = res.code
     // 請(qǐng)求
     imitationPost({
     url: '/test/loginWithCode',
     data: {
     code
     },
     success: data => {
     // 獲取userInfo
     wx.getUserInfo({
     success: res => {
     let userInfo = res.userInfo
     // 請(qǐng)求
     imitationPost({
     url: '/test/saveUserInfo',
     data: {
     userInfo
     },
     success: data => {
     console.log(data)
     },
     fail: res => {
     console.log(res)
     }
     })
     },
     fail: res => {
     console.log(res)
     }
     })
     },
     fail: res => {
     console.log(res)
     }
     })
     },
     fail: res => {
     console.log(res)
     }
    })
    

    下面分析如何用Promise來(lái)進(jìn)行簡(jiǎn)化代碼

    因?yàn)槲⑿判〕绦虍惒絘pi都是success和fail的形式,所有有人封裝了這樣一個(gè)方法:

    promisify.js

    module.exports = (api) => {
     return (options, ...params) => {
     return new Promise((resolve, reject) => {
     api(Object.assign({}, options, { success: resolve, fail: reject }), ...params);
     });
     }
    }
    

    先看最簡(jiǎn)單的:

    // 獲取系統(tǒng)信息
    wx.getSystemInfo({
     success: res => {
     // success
     console.log(res)
     },
     fail: res => {
    
     }
    })
    
    

    使用上面的promisify.js簡(jiǎn)化后:

    const promisify = require('./promisify')
    const getSystemInfo = promisify(wx.getSystemInfo)
    
    getSystemInfo().then(res=>{
     // success
     console.log(res)
    }).catch(res=>{
    
    })
    

    getSystemInfo

    可以看到簡(jiǎn)化后的回調(diào)里少了一個(gè)縮進(jìn),并且回調(diào)函數(shù)從9行減少到了6行。

    回調(diào)金字塔的簡(jiǎn)化效果

    那么再來(lái)看看最開(kāi)始的那個(gè)回調(diào)金字塔

    const promisify = require('./promisify')
    const login = promisify(wx.login)
    const getSystemInfo = promisify(wx.getSystemInfo)
    
    // 登錄
    login().then(res => {
     let code = res.code
     // 請(qǐng)求
     pImitationPost({
     url: '/test/loginWithCode',
     data: {
     code
     },
     }).then(data => {
     // 獲取userInfo
     getUserInfo().then(res => {
     let userInfo = res.userInfo
     // 請(qǐng)求
     pImitationPost({
     url: '/test/saveUserInfo',
     data: {
     userInfo
     },
     }).then(data => {
     console.log(data)
     }).catch(res => {
     console.log(res)
     })
     }).catch(res => {
     console.log(res)
     })
     }).catch(res => {
     console.log(res)
     })
    }).catch(res => {
     console.log(res)
    })
    
    

    簡(jiǎn)化回調(diào)

    可以看到簡(jiǎn)化效果非常明顯。

    同樣適用于網(wǎng)頁(yè)或者nodejs等中。

    參考

    Promise 對(duì)象

    源代碼

    tomfriwel/MyWechatAppDemo 的promisePage頁(yè)面

    聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    微信小程序使用Promise簡(jiǎn)化回調(diào)

    微信小程序使用Promise簡(jiǎn)化回調(diào):Promise 是異步編程的一種解決方案,比傳統(tǒng)的解決方案——回調(diào)函數(shù)和事件——更合理和更強(qiáng)大。它由社區(qū)最早提出和實(shí)現(xiàn),ES6 將其寫進(jìn)了語(yǔ)言標(biāo)準(zhǔn),統(tǒng)一了用法,原生提供了Promise對(duì)象。 所謂Promise,簡(jiǎn)單說(shuō)就是一個(gè)容器,里面保存著某個(gè)未來(lái)才會(huì)結(jié)束的事件(
    推薦度:
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 日韩亚洲精品福利| 日韩精品真人荷官无码| 亚洲国产精品嫩草影院在线观看| 精品国产福利久久久| 亚洲av无码国产精品色午夜字幕| 永久免费精品视频| 久久精品国产99久久无毒不卡 | 国产亚洲精品资源在线26u| 欧美亚洲综合免费精品高清在线观看| 中文精品一卡2卡3卡4卡| AAA级久久久精品无码片| 无码人妻精品一区二区三区久久| 久久国产精品免费一区| 亚洲人成亚洲精品| 国产精品国产精品国产专区不卡| 久久精品人人做人人妻人人玩| 亚洲А∨精品天堂在线 | 精品欧美一区二区在线观看| 99久久99久久精品国产| 九九精品成人免费国产片| 国产精品扒开腿做爽爽爽视频| 亚洲精品国产首次亮相| 亚洲国产精品国产自在在线| 蜜臀精品无码AV在线播放| 国内精品久久久久影院网站| 国产精品被窝福利一区| jizz国产精品| 国产精品超碰12396| 色播精品免费小视频| 欧美精品人爱c欧美精品| 欧美黑人巨大精品| 办公室久久精品| 国产精品九九久久免费视频 | 国产精品免费久久久久电影网| 2024最新国产精品一区| 97精品人妻一区二区三区香蕉| 99国产精品私拍pans大尺度| 99久久精品免费看国产免费| 国产精品超碰12396| 黄床大片免费30分钟国产精品| 久久亚洲精品无码观看不卡|