博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决小程序 callback hell
阅读量:5767 次
发布时间:2019-06-18

本文共 1702 字,大约阅读时间需要 5 分钟。

让我们先回顾一下 callback

写一个授权通用方法。

const _authHandle = (setting ,callback) => {    wx.getSetting({        success: (response) => {            if (response.authSetting[setting]) {                return callback(true)            }            wx.authorize({                scope: setting,                success: () => {                    return callback(true)                },                fail: () => {                    return callback(false)                }            })        }    })}复制代码

usage

_authHandle('scope.userInfo',(result) => {  console.log(result)})复制代码

Promise

我们用 promise 稍微修改一下之前的函数~

const _authHandle = (setting) => {    return new Promise((resolve, reject) => {        wx.getSetting({            success: (response) => {                if (response.authSetting[setting]) {                    resolve(true)                }                    wx.authorize({                    scope: setting,                    success: () => {                        resolve(true)                    },                    fail: () => {                        reject(false)                    }                })            }        })    })}复制代码

usage

_authHandle('scope.userInfo')    .then(res => {        // res    })    .catch(err => {        // err    })复制代码

async/await

原生小程序里面使用 async/await ,需要引入 facebook 的 regenerator-runtime

去 github 上把文件下到 lib 文件内,可以新建一个叫 runtime 的文件夹,丢进去。

import regeneratorRuntime from'../../lib/runtime.js'复制代码

usage

async onTapAuth () {    await _authHandle('scope.userInfo')        .then(() => {            // yes        })        .catch(() => {            // no        })}复制代码

注意: await 总是返回一个 Promise 对象,所以可以使用 then catch 捕获异常,或者使用同步 try catch 捕获异常。推荐使用 then catch

转载地址:http://hddux.baihongyu.com/

你可能感兴趣的文章
我的IDEA配置
查看>>
myeclipse显示行号
查看>>
编写高性能的java程序
查看>>
Spring 的配置详解
查看>>
linux已经不存在惊群现象
查看>>
上位机和底层逻辑的解耦
查看>>
关于微信二次分享 配置标题 描述 图片??
查看>>
springcloud使用zookeeper作为config的配置中心
查看>>
校园火灾Focue-2---》洗手间的一套-》电梯
查看>>
css控制文字换行
查看>>
bzoj1913
查看>>
bzoj2301(莫比乌斯反演)
查看>>
【转】对于HttpClient和HtmlUnit的理解
查看>>
L104
查看>>
分镜头脚本
查看>>
链表基本操作的实现(转)
查看>>
邮件发送1
查看>>
[转] libcurl异步方式使用总结(附流程图)
查看>>
编译安装LNMP
查看>>
[转]基于display:table的CSS布局
查看>>