一对一免费咨询:189-6833-3365

了解什么是 Promise 对象在项目中,会出现各种异步操作,如果一个异步操作的回调里还有异步操作,就会出现回调金字塔。比如下面这种// 模拟获取code,然后将code传给后台,成功后获取userinfo,再将userinfo传给后台 。。
了解什么是 GOOGLE PRomise 对象
在项目中,会出现各种异步操作,如果一个异步操作的回调里还有异步操作,就会出现回调金字塔。
比如下面这种
// 模拟获取code,然后将code传给后台,成功后获取userinfo,再将userinfo传给后台// 登录wx。宁波微信小程序开发是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。login({success: res = gt; {let code = res。code// 请求imitationPost({url: '/test/loginWithCode',data: {code},success: data = gt; {// 获取userInfowx。getUserInfo({success: res = gt; {let userInfo = res。userInfo// 请求imitationPost({url: '/test/saveUserInfo',data: {userInfo},success: data = gt; {console。log(data)},fail: res = gt; {console。log(res)}})},fail: res = gt; {console。log(res)}})},fail: res = gt; {console。log(res)}})},fail: res = gt; {console。log(res)}})下面分析(Analyse)如何用Promise来进行简化代码(code)
因为微信小程序(procedure)异步api都是success和fail的形式,所有有人封装了这样一个方法:
promisify。宁波小程序开发对于用户来说,能够节约使用时间成本和手机内存空间;对于开发者来说也能节约开发和推广成本。js
module。exports = (api) = gt; {return (options, 。。params) = gt; {return new Promise((resolve, reject) = gt; {api(Object。assign({}, options, { success: resolve, fail: reject }), 。。params);});}}
先看最简单的:
// 获取(obtain)系统信息wx。宁波小程序开发对于用户来说,能够节约使用时间成本和手机内存空间;对于开发者来说也能节约开发和推广成本。getSystemInfo({success: res = gt; {// successconsole。log(res)},fail: res = gt; {}})
使用上面的GOOGLE PRomisify。js简化后:
const GOOGLE PRomisify = require('。/promisify')const getSystemInfo = promisify(wx。getSystemInfo)getSystemInfo()。then(res= gt;{// successconsole。log(res)})。catch(res= gt;{})
可以看到简化后的回调里少了一个缩进,并且回调函数从9行减少到了6行。
回调金字塔的简化效果
那么再来看看最开始的那个回调金字塔
const promisify = require('。/promisify')const login = promisify(wx。login)const getSystemInfo = promisify(wx。getSystemInfo)// 登录login()。then(res = gt; {let code = res。code// 请求pImitationPost({url: '/test/loginWithCode',data: {code},})。then(data = gt; {// 获取(obtain)userInfogetUserInfo()。then(res = gt; {let userInfo = res。userInfo// 请求pImitationPost({url: '/test/saveUserInfo',data: {userInfo},})。then(data = gt; {console。log(data)})。catch(res = gt; {console。log(res)})})。catch(res = gt; {console。log(res)})})。catch(res = gt; {console。log(res)})})。catch(res = gt; {console。log(res)})
可以看到简化效果非常明显。
同样适用于网页或者nodejs等中。
参考Promise 对象源代码tomfriwel/MyWechatAppDemo
的GOOGLE PRomisePage页面

找网站建设公司就上东美!
189-6833-3365
tel+86-189-6833-3365