vue js 引入sdk,思路代码整理 app.vue引入
代码解析
function handleAuthReady() {
const ywAuth = (window as any).ywAuth;
if (ywAuth) {
return Promise.resolve(ywAuth);
}
return new Promise(resolve => {
setTimeout(() => {
resolve(handleAuthReady());
}, 100);
});
}
export default {
init() {
const ywAuth = (window as any).ywAuth;
if (typeof ywAuth !== 'undefined') {
return Promise.resolve(ywAuth);
}
const AuthSDKUrl = 'https://www.cmpassport.com/h5/js/jssdk_yw_auth/jssdk.min.js';
return new Promise(resolve => {
// 插入script脚本
const scriptNode = document.createElement('script');
scriptNode.setAttribute('type', 'text/javascript');
scriptNode.setAttribute('src', AuthSDKUrl);
document.body.appendChild(scriptNode);
/** 做一步延时操作用于等待sdk加载完成 */
handleAuthReady().then((ywAuth: any) => {
resolve(ywAuth);
});
});
}
};
这段代码是一个模块的导出,默认导出一个对象,其中包含了一个名为 init
的方法。让我们逐行解析代码:
function handleAuthReady() {
const ywAuth = (window as any).ywAuth;
if (ywAuth) {
return Promise.resolve(ywAuth);
}
return new Promise(resolve => {
setTimeout(() => {
resolve(handleAuthReady());
}, 100);
});
}
这是一个名为 handleAuthReady
的函数,用于处理认证准备就绪的逻辑。它首先检查全局变量 ywAuth
是否存在,如果存在则返回一个解析后的 Promise 对象,该 Promise 对象的结果为 ywAuth
。如果 ywAuth
不存在,则创建一个新的 Promise 对象,并在 100 毫秒后通过递归调用 handleAuthReady
函数来尝试获取 ywAuth
。
export default {
init() {
const ywAuth = (window as any).ywAuth;
if (typeof ywAuth !== 'undefined') {
return Promise.resolve(ywAuth);
}
const AuthSDKUrl = 'https://www.cmpassport.com/h5/js/jssdk_yw_auth/jssdk.min.js';
return new Promise(resolve => {
// 插入script脚本
const scriptNode = document.createElement('script');
scriptNode.setAttribute('type', 'text/javascript');
scriptNode.setAttribute('src', AuthSDKUrl);
document.body.appendChild(scriptNode);
/** 做一步延时操作用于等待sdk加载完成 */
handleAuthReady().then((ywAuth: any) => {
resolve(ywAuth);
});
});
}
};
这段代码导出了一个默认对象,其中包含一个名为 init
的方法。init
方法用于初始化操作,首先检查全局变量 ywAuth
是否存在,如果存在则直接返回一个解析后的 Promise 对象,该 Promise 对象的结果为 ywAuth
。
如果 ywAuth
不存在,代码会创建一个新的 <script>
元素,并将其插入到文档的 <body>
元素中。这个 <script>
元素用于加载一个外部的 JavaScript SDK 文件,即 AuthSDKUrl
所指定的 URL。
在插入 <script>
元素后,代码会执行 handleAuthReady()
方法,并通过 then
方法等待 handleAuthReady
返回的 Promise 对象解析。一旦 Promise 对象解析完成,将会解析 ywAuth
并将其作为结果传递给外部的 Promise 对象,以完成整个初始化过程。
最终,这个对象会被导出为模块的默认导出,可以在其他地方通过导入该模块来使用其中的 init
方法。