這篇文章主要介紹如何使用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) } })
因為微信小程序異步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)新互聯