主机参考:VPS测评参考推荐/专注分享VPS服务器优惠信息!若您是商家可以在本站进行投稿,查看详情!此外我们还提供软文收录、PayPal代付、广告赞助等服务,查看详情! |
我们发布的部分优惠活动文章可能存在时效性,购买时建议在本站搜索商家名称可查看相关文章充分了解该商家!若非中文页面可使用Edge浏览器同步翻译!PayPal代付/收录合作 |
上一篇文章:
function wxPromisify(fn) { return async function(args) { return new Promise((resolve,spect) => { fn({ ...(args || {}) , Success : res =>solve(res), failure: err =>reject(err) });}导出函数 toAsync(names) { return (names || []) .map(name => ( { name, member : wx[name] } )) .filter(t => typeof t.member === "function") .reduce((r, t) => { r[t.name] = wxPromisify( wx[t.name ]); return r; }, {});}// 页面/somepage/somepage. jsimport { toAsync } = require("../../utils/async");// .. .const awx = toAsync ([“登录”,“请求”]);await awx.login();await awx.request({...});
也许这已经被封装了?
这次是在我编写的另一个包中 因为在小程序中编写多个toAsync调用确实很乏味。
我可以封装一次并在任何地方调用它吗? 封装了初始化期间使用的所有方法。 然而,泄漏是不可避免的。
我可以封装一次并在任何地方调用它而不初始化它吗? 获取代理主机:
// utils/asyncjsfunction wxPromisify(fn) { ... } // 导出函数 asyncProxy(target) 之前已定义 { return new Proxy(target, {cache: { }, get (it , prop) { const aFn = this.cache[prop]; if (aFn) { return aFn; } const v = it[prop]; if (typeof v !== "function") { return v } return this.cache [prop] = wxPromisify(v); } });}// app.jsimport { asyncProxy } from "./utils/async";App({ onLaunch: function() {wx.awx = asyncProxy(wx); // .... }})// page/somepage/somepage// ...const { awx } = wx;await awx.login();await awx.request({ ...});
说明:
awx 是代理的 wx 对象,因此调用 awx.login() 实际上是先调用代理的 get(wx, "login") 。 寻找替代 wx.login 的东西。
按照上面代码中的逻辑,我们首先使用wxPromisify()在缓存中查找封装的结果。 如果存在则直接返回。 如果没有,先封装成Promise网络函数,缓存起来,然后返回。 。
直观的解释是:
awx.login(); ^^^^^^ get(wx, "login")
推荐教程:《微信公众号》
PHP快速学习视频免费教程(从入门到精通) )
如何学习 PHP?我应该从哪里开始学习 PHP?别担心。 这里有简单的 PHP 学习教程(从初学者到专家)。 您可以保存并下载您想学习的朋友。
下载
这几篇文章你可能也喜欢:
- 暂无相关推荐文章
本文由主机参考刊发,转载请注明:代理封装了applet的异步调用(promise封装了applet的请求) https://zhujicankao.com/124039.html
评论前必须登录!
注册