成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

如何使用Promise簡化回調-創(chuàng)新互聯

這篇文章主要介紹如何使用Promise簡化回調,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

網站設計、成都網站設計的關注點不是能為您做些什么網站,而是怎么做網站,有沒有做好網站,給成都創(chuàng)新互聯公司一個展示的機會來證明自己,這并不會花費您太多時間,或許會給您帶來新的靈感和驚喜。面向用戶友好,注重用戶體驗,一切以用戶為中心。

比如下面這種

// 模擬獲取code,然后將code傳給后臺,成功后獲取userinfo,再將userinfo傳給后臺
// 登錄
wx.login({
    success: res => {
        let code = res.code
        // 請求
        imitationPost({
            url: '/test/loginWithCode',
            data: {
                code
            },
            success: data => {
                // 獲取userInfo
                wx.getUserInfo({
                    success: res => {
                        let userInfo = res.userInfo
                        // 請求
                        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來進行簡化代碼

因為微信小程序異步api都是success和fail的形式,所有有人封裝了這樣一個方法:

promisify.js

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

先看最簡單的:

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

    }
})

使用上面的promisify.js簡化后:

const promisify = require('./promisify')
const getSystemInfo = promisify(wx.getSystemInfo)

getSystemInfo().then(res=>{
    // success
    console.log(res)
}).catch(res=>{

})

可以看到簡化后的回調里少了一個縮進,并且回調函數從9行減少到了6行。

回調金字塔的簡化效果

那么再來看看最開始的那個回調金字塔

const promisify = require('./promisify')
const login = promisify(wx.login)
const getSystemInfo = promisify(wx.getSystemInfo)

// 登錄
login().then(res => {
    let code = res.code
    // 請求
    pImitationPost({
        url: '/test/loginWithCode',
        data: {
            code
        },
    }).then(data => {
        // 獲取userInfo
        getUserInfo().then(res => {
            let userInfo = res.userInfo
            // 請求
            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)
})

可以看到簡化效果非常明顯。

同樣適用于網頁或者nodejs等中。

以上是“如何使用Promise簡化回調”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道!

分享名稱:如何使用Promise簡化回調-創(chuàng)新互聯
本文網址:http://jinyejixie.com/article22/isocc.html

成都網站建設公司_創(chuàng)新互聯,為您提供靜態(tài)網站、網站制作、全網營銷推廣、企業(yè)建站、用戶體驗、面包屑導航

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

成都做網站
禄丰县| 贺州市| 射阳县| 岳阳市| 岳阳市| 大荔县| 云南省| 纳雍县| 南部县| 利津县| 东山县| 阳泉市| 牟定县| 江陵县| 通河县| 达日县| 红河县| 克山县| 腾冲县| 望奎县| 南充市| 肇源县| 综艺| 长寿区| 元朗区| 金门县| 德昌县| 射阳县| 宁波市| 鹤山市| 西昌市| 班玛县| 勐海县| 榆中县| 天气| 金秀| 邯郸县| 郸城县| 平远县| 黄石市| 苏尼特右旗|