如何检测空cookie并按需调用getCart获取cart_guid写入cookie
你可以按照以下步骤实现需求:
1. 先实现通用的cookie获取工具函数
用来读取指定名称的cookie值:
function getCookie(name) { const value = `; ${document.cookie}`; const parts = value.split(`; ${name}=`); if (parts.length === 2) return parts.pop().split(';').shift(); }
2. 扩展cartHelper增加检查逻辑
给cartHelper新增封装好的检查+初始化方法,避免重复写判断逻辑:
let cartHelper = { cartCookieName: "_cart", getCart: function (callback = undefined) { return apiHelper.getRequest( "/carts", (response) => { // 建议加path=/,避免站点不同路径下cookie不共享的问题 document.cookie = `${this.cartCookieName}=${response.data.attributes.cart_guid}; path=/`; if (callback) { callback(); } }, ) }, // 新增检查+初始化方法 ensureCartGuid: function(callback = undefined) { const currentCartGuid = getCookie(this.cartCookieName); // 同时覆盖cookie不存在、值为空两种无效场景 if (!currentCartGuid) { return this.getCart(callback); } // 已有有效cartGuid直接执行回调 if (callback) { callback(); } } }
3. 按钮点击事件绑定
点击按钮时直接调用封装好的方法即可:
// 替换为你实际的按钮DOM选择器 document.querySelector('#yourButtonId').addEventListener('click', () => { cartHelper.ensureCartGuid(() => { // 这里写点击按钮需要执行的后续逻辑,执行时已经保证cartGuid存在 }); });
内容的提问来源于stack exchange,提问作者magic bean
相关产品推荐
相关产品推荐

