<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[刘新修]]></title> 
<link>http://pic1.liuxinxiu.com:80/index.php</link> 
<description><![CDATA[刘新修的个人博客 (Liuxinxiu'S Blog)]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[刘新修]]></copyright>
<item>
<link>http://pic1.liuxinxiu.com:80/s/348/</link>
<title><![CDATA[字符串遍历拼接、字符串局部清除、字符串局部插入，等逻辑]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[H5/JS/CSS]]></category>
<pubDate>Tue, 24 Dec 2024 11:57:56 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/s/348/</guid> 
<description>
<![CDATA[ 
	<div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="comment">/*** 清空指定字符串之间的内容(包括起始字符) ***/</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">function</span><span> deleteBetweenCharacters(str, startChar, endChar) &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/*** 容错处理 ***/</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span> (</span><span class="keyword">typeof</span><span>(str) == </span><span class="string">'undefined'</span><span> &#124;&#124;&nbsp;&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">typeof</span><span>(startChar) == </span><span class="string">'undefined'</span><span> &#124;&#124;&nbsp;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">typeof</span><span>(endChar) == </span><span class="string">'undefined'</span><span>) &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span> </span><span class="keyword">false</span><span>;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/*** 起始替换逻辑 ***/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;let startIndex = str.indexOf(startChar);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;let endIndex = str.indexOf(endChar);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">while</span><span> (startIndex !== -1 &amp;&amp; endIndex !== -1) &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str = str.substring(0, startIndex) + str.substring(endIndex + 1);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;startIndex = str.indexOf(startChar);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endIndex = str.indexOf(endChar);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span> str;&nbsp;&nbsp;</span></span></li><li><span>&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="comment">/*** 向字符串指定位置插入字符(业务标记符) ***/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">function</span><span> insertString(str, insertStr, index) &#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/*** 容错处理 ***/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span> (</span><span class="keyword">typeof</span><span>(str) == </span><span class="string">'undefined'</span><span> &#124;&#124;&nbsp;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">typeof</span><span>(insertStr) == </span><span class="string">'undefined'</span><span> &#124;&#124;&nbsp;&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">typeof</span><span>(index) == </span><span class="string">'undefined'</span><span>) &#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span> </span><span class="keyword">false</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span> str.slice(0, index) + insertStr + str.slice(index);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">/*** 业务处理主函数 ***/</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">function</span><span> main (str, startChar, endChar, itemNames) &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/*** 容错处理 ***/</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span> (</span><span class="keyword">typeof</span><span>(str) == </span><span class="string">'undefined'</span><span> &#124;&#124;&nbsp;&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">typeof</span><span>(startChar) == </span><span class="string">'undefined'</span><span> &#124;&#124;&nbsp;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">typeof</span><span>(endChar) == </span><span class="string">'undefined'</span><span> &#124;&#124;&nbsp;&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">typeof</span><span>(itemNames) == </span><span class="string">'undefined'</span><span>) &#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span> </span><span class="keyword">false</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> newStrData = str;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> startIndex = str.indexOf(startChar);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/*** 如果是首次出现 ***/</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span> (str.indexOf(</span><span class="string">'--'</span><span>) == -1) &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str = insertString(newStrData, <span class="string">'--'</span><span>, startIndex);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/*** 调用清除方法 ***/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let data = deleteBetweenCharacters(str, startChar, endChar);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let replacedStr = data? data.replace(/--/g, itemNames) : <span class="string">''</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span> replacedStr;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li><li><span><span class="comment">// 示例用法</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="comment">// const inputString = &quot;This is 【some】 example 【string】 with 【special】 characters.&quot;;</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="comment">// const str = main(inputString, &quot;【&quot;, &quot;】&quot;)</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="comment">// console.log(str);</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">/*** 业务源数据 ***/</span><span>&nbsp;&nbsp;</span></span></li><li><span>let dataList = [&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#123;idStorage: 1, name: <span class="string">'red'</span><span>, riskItem: </span><span class="string">''</span><span>, suggest: </span><span class="string">'建议核实【】实际配件价格，剔除多定金额。'</span><span>&#125;,&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#123;idStorage: 1, name: <span class="string">'red1'</span><span>, riskItem: </span><span class="string">''</span><span>, suggest: </span><span class="string">'建议核实【高压电池包】【高压电池包】实际配件价格，剔除多定金额。'</span><span>&#125;,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#123;idStorage: 2, name: <span class="string">'sese'</span><span>, riskItem: </span><span class="string">''</span><span>, suggest: </span><span class="string">'建议核实【】实际配件价格，剔除多定金额。'</span><span>&#125;,&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#123;idStorage: 1, name: <span class="string">'red'</span><span>, riskItem: </span><span class="string">''</span><span>, suggest: </span><span class="string">'建议核实【】实际配件价格，剔除多定金额。'</span><span>&#125;,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#123;idStorage: 3, name: <span class="string">'bbbd'</span><span>, riskItem: </span><span class="string">''</span><span>, suggest: </span><span class="string">'建议核实【】实际配件价格，剔除多定金额。'</span><span>&#125;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;];&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="comment">/*** 拼接字符串小模板(备用) ***/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>let itemNames = <span class="string">'【'</span><span> + dataList.filter(item =&gt; item.idStorage === 1).map(item =&gt; item.name).join(</span><span class="string">'】【'</span><span>) + </span><span class="string">'】'</span><span>;&nbsp;&nbsp;</span></span></li><li><span>console.log(<span class="string">'itemNames'</span><span>, itemNames)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="comment">/*** 拷贝源数据备用 ***/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">var</span><span> arr = JSON.parse(JSON.stringify(dataList))&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">for</span><span> (</span><span class="keyword">var</span><span> i = 0; i &lt; arr.length; i++) &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span> (arr[i].idStorage == 1) &#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arr[i].suggest = main(arr[i].suggest, <span class="string">&quot;【&quot;</span><span>, </span><span class="string">&quot;】&quot;</span><span>, itemNames)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>console.log(<span class="string">'arr'</span><span>, arr)&nbsp;&nbsp;</span></span></li></ol></div><div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="keyword">const</span><span>&nbsp;inputString&nbsp;=&nbsp;</span><span class="string">&quot;This&nbsp;is&nbsp;【some】&nbsp;example&nbsp;【string】&nbsp;with&nbsp;【special】&nbsp;characters.&quot;</span><span>;&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">const</span><span>&nbsp;str&nbsp;=&nbsp;deleteBetweenCharacters(inputString,&nbsp;</span><span class="string">&quot;【&quot;</span><span>,&nbsp;</span><span class="string">&quot;】&quot;</span><span>)&nbsp;&nbsp;</span></span></li><li class="alt"><span>console.log(str);&nbsp;&nbsp;</span></li><li><span>//This&nbsp;is&nbsp;&nbsp;example&nbsp;&nbsp;<span class="keyword">with</span><span>&nbsp;&nbsp;characters.&nbsp;&nbsp;</span></span></li></ol></div><p>&nbsp;</p>
]]>
</description>
</item><item>
<link>http://pic1.liuxinxiu.com:80/s/347/</link>
<title><![CDATA[JS时间格式排序]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[H5/JS/CSS]]></category>
<pubDate>Tue, 17 Dec 2024 14:15:27 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/s/347/</guid> 
<description>
<![CDATA[ 
	<div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="comment">/**</span>&nbsp;</span></li><li><span><span class="comment">&nbsp;*&nbsp;@description&nbsp;2.根据日期时间混合排序</span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;*&nbsp;@param&nbsp;&#123;Object[]&#125;&nbsp;dataList&nbsp;-&nbsp;要排序的数组</span>&nbsp;</span></li><li><span><span class="comment">&nbsp;*&nbsp;@param&nbsp;&#123;string&#125;&nbsp;property&nbsp;-&nbsp;传入需要排序的字段</span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;*&nbsp;@param&nbsp;&#123;boolean&#125;&nbsp;bol&nbsp;-&nbsp;true:&nbsp;升序；false:&nbsp;降序；默认为true&nbsp;升序</span>&nbsp;</span></li><li><span><span class="comment">&nbsp;*&nbsp;@return&nbsp;&#123;Object[]&#125;&nbsp;dataList&nbsp;-&nbsp;返回改变完顺序的数组</span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">function</span><span>&nbsp;dateSort(dataList,&nbsp;property,&nbsp;bol&nbsp;=&nbsp;</span><span class="keyword">true</span><span>)&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;dataList.sort(<span class="keyword">function</span><span>&nbsp;(a,&nbsp;b)&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(bol)&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;return&nbsp;a[property].localeCompare(b[property]);&nbsp;//&nbsp;升序</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;Date.parse(a[property])&nbsp;-&nbsp;Date.parse(b[property]);&nbsp;&nbsp;</span><span class="comment">//&nbsp;升序</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;<span class="keyword">else</span><span>&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;return&nbsp;b[property].localeCompare(a[property]);&nbsp;//&nbsp;降序</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;Date.parse(b[property])&nbsp;-&nbsp;Date.parse(a[property]);&nbsp;&nbsp;</span><span class="comment">//&nbsp;降序</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&#125;)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;dataList;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>let&nbsp;arrList&nbsp;=&nbsp;[&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;id:&nbsp;1,&nbsp;name:&nbsp;<span class="string">'test1'</span><span>,&nbsp;score:&nbsp;99,&nbsp;dateTime:&nbsp;</span><span class="string">'2024-03-25&nbsp;13:51:03'</span><span>&nbsp;&#125;,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;id:&nbsp;2,&nbsp;name:&nbsp;<span class="string">'test2'</span><span>,&nbsp;score:&nbsp;89,&nbsp;dateTime:&nbsp;</span><span class="string">'2024-03-24&nbsp;23:01:52'</span><span>&nbsp;&#125;,&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;id:&nbsp;3,&nbsp;name:&nbsp;<span class="string">'test3'</span><span>,&nbsp;score:&nbsp;102,&nbsp;dateTime:&nbsp;</span><span class="string">'2024-03-15&nbsp;01:51:12'</span><span>&nbsp;&#125;,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;id:&nbsp;4,&nbsp;name:&nbsp;<span class="string">'test4'</span><span>,&nbsp;score:&nbsp;100,&nbsp;dateTime:&nbsp;</span><span class="string">'2024-03-23&nbsp;10:30:39'</span><span>&nbsp;&#125;,&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;id:&nbsp;5,&nbsp;name:&nbsp;<span class="string">'test5'</span><span>,&nbsp;score:&nbsp;111,&nbsp;dateTime:&nbsp;</span><span class="string">'2024-03-23&nbsp;11:21:42'</span><span>&nbsp;&#125;,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;]&nbsp;&nbsp;</span></li><li><span><span class="comment">//&nbsp;console.log('升序：',&nbsp;dateSort(arrList,&nbsp;'dateTime'));&nbsp;//&nbsp;升序</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>console.log(<span class="string">'降序：'</span><span>,&nbsp;dateSort(arrList,&nbsp;</span><span class="string">'dateTime'</span><span>,&nbsp;</span><span class="keyword">false</span><span>));&nbsp;</span><span class="comment">//&nbsp;降序</span><span>&nbsp;&nbsp;</span></span></li></ol></div><p>&nbsp;<img src="/attachment/2024/12/image/2024-12-17_221432.png" width="1089" height="236" alt="" /></p>
]]>
</description>
</item><item>
<link>http://pic1.liuxinxiu.com:80/s/344/</link>
<title><![CDATA[fetch获取wasm模块实例]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[H5/JS/CSS]]></category>
<pubDate>Thu, 14 Nov 2024 03:18:52 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/s/344/</guid> 
<description>
<![CDATA[ 
	<p>fetch获取wasm模块实例</p><div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="comment">/*** 完整的实例 ***/</span><span>&nbsp;&nbsp;</span></span></li><li><span>fetch(<span class="string">&quot;/pkg/wasm-lib/wasm_lib_bg.wasm&quot;</span><span>)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;.then((response) =&gt; response.arrayBuffer())&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;.then(bytes =&gt; &#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> module = </span><span class="keyword">new</span><span> WebAssembly.Module(bytes);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> imports = &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;__wbindgen_init_externref_table&quot;</span><span>: ()=&gt; &#123;&#125;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> instance = </span><span class="keyword">new</span><span> WebAssembly&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Instance(module, &#123; wbg: imports&#125;);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(instance.exports.add(1,2));&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;)&nbsp;&nbsp;</span></li></ol></div><p>axios获取wasm模块实例</p><div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="comment">/***&nbsp;请求.wasm文件流&nbsp;***/</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">this</span><span>.$store.dispatch(</span><span class="string">&quot;test/getWasmStream&quot;</span><span>,&#123;&#125;).then(async&nbsp;(res)&nbsp;=&gt;&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;WebAssembly.compile(res.data).then(module&nbsp;=&gt;&nbsp;&#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;使用编译好的模块</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;打印静态属性</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;imports&nbsp;=&nbsp;WebAssembly.Module.imports(module);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;exports&nbsp;=&nbsp;WebAssembly.Module.exports(module);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;strJSON&nbsp;=&nbsp;JSON.stringify(&#123;</span><span class="string">&quot;imports&quot;</span><span>:imports,&nbsp;</span><span class="string">&quot;exports&quot;</span><span>:exports&#125;,&nbsp;</span><span class="keyword">null</span><span>,&nbsp;2)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(<span class="string">'strJSON'</span><span>,&nbsp;strJSON)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;imports&nbsp;=&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;__wbindgen_init_externref_table&quot;</span><span>:&nbsp;()=&gt;&nbsp;&#123;&#125;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/***&nbsp;使用WASM模块(运行实例)&nbsp;***/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;instance&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;WebAssembly.Instance(module,&nbsp;&#123;wbg:&nbsp;imports&#125;)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//console.log(instance.exports.add(3,6))</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">this</span><span>.exports&nbsp;=&nbsp;instance.exports;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;).<span class="keyword">catch</span><span>(error&nbsp;=&gt;&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.error(error);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;);&nbsp;&nbsp;</span></li><li class="alt"><span>&#125;).<span class="keyword">catch</span><span>((error)=&gt;&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;console.log(<span class="string">'Action&nbsp;failed'</span><span>,&nbsp;error);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&#125;);&nbsp;&nbsp;</span></li></ol></div><p>loadWebAssemblyModule.js 封装</p><div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="comment">/*</span>&nbsp;</span></li><li><span><span class="comment">&nbsp;*&nbsp;@Description:&nbsp;loadWebAssemblyModule.js</span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;*&nbsp;@Version:&nbsp;1.0</span>&nbsp;</span></li><li><span><span class="comment">&nbsp;*&nbsp;@Author:&nbsp;Jesse&nbsp;Liu</span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;*&nbsp;@Date:&nbsp;2022-11-14&nbsp;10:32:06</span>&nbsp;</span></li><li><span><span class="comment">&nbsp;*&nbsp;@LastEditors:&nbsp;Jesse&nbsp;Liu</span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;*&nbsp;@LastEditTime:&nbsp;2024-11-14&nbsp;10:55:25</span>&nbsp;</span></li><li><span><span class="comment">&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="comment">/***&nbsp;AJAX加载WASM模块的函数&nbsp;***/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">const</span><span>&nbsp;getWebAssemblyModule&nbsp;=&nbsp;(url)&nbsp;=&gt;&nbsp;&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/***&nbsp;返回一个Promise&nbsp;***/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;</span><span class="keyword">new</span><span>&nbsp;Promise(</span><span class="keyword">function</span><span>(resolve,&nbsp;reject)&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;xhr&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;XMLHttpRequest();&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xhr.open(<span class="string">'GET'</span><span>,&nbsp;url,&nbsp;</span><span class="keyword">true</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xhr.responseType&nbsp;=&nbsp;<span class="string">'arraybuffer'</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xhr.onload&nbsp;=&nbsp;<span class="keyword">function</span><span>()&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(xhr.status&nbsp;===&nbsp;200)&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;加载成功，编译WASM模块</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;arrayBuffer&nbsp;=&nbsp;xhr.response;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WebAssembly.compile(arrayBuffer).then(<span class="keyword">function</span><span>(module)&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resolve(module);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;).<span class="keyword">catch</span><span>(</span><span class="keyword">function</span><span>(error)&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reject(error);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;<span class="keyword">else</span><span>&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;出错了</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reject(<span class="keyword">new</span><span>&nbsp;Error(</span><span class="string">'Error&nbsp;loading&nbsp;WASM&nbsp;module:&nbsp;'</span><span>&nbsp;+&nbsp;xhr.statusText));&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xhr.send();&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;);&nbsp;&nbsp;</span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">/***&nbsp;fetch加载WASM模块的函数&nbsp;***/</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">const</span><span>&nbsp;fetchWebAssemblyModule&nbsp;=&nbsp;(url)&nbsp;=&gt;&nbsp;&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/***&nbsp;返回一个Promise&nbsp;***/</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;</span><span class="keyword">new</span><span>&nbsp;Promise(</span><span class="keyword">function</span><span>(resolve,&nbsp;reject)&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fetch(url)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.then((response)&nbsp;=&gt;&nbsp;response.arrayBuffer())&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.then(bytes&nbsp;=&gt;&nbsp;&#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;module&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;WebAssembly.Module(bytes);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resolve(module);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.<span class="keyword">catch</span><span>(error&nbsp;=&gt;&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.error(<span class="string">'Fetch&nbsp;错误:'</span><span>,&nbsp;error)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reject(error);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;);&nbsp;&nbsp;</span></li><li><span>&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="keyword">export</span><span>&nbsp;&#123;&nbsp;fetchWebAssemblyModule,&nbsp;getWebAssemblyModule&nbsp;&#125;;&nbsp;&nbsp;</span></span></li></ol></div><p>&nbsp;</p><p>&nbsp;</p>
]]>
</description>
</item><item>
<link>http://pic1.liuxinxiu.com:80/s/339/</link>
<title><![CDATA[ 原生JS获取公网IP地址]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[H5/JS/CSS]]></category>
<pubDate>Fri, 11 Oct 2024 08:39:38 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/s/339/</guid> 
<description>
<![CDATA[ 
	<div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="keyword">function</span><span> getUserIP(callback) &#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> ip_dups = &#123;&#125;;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> RTCPeerConnection = window.RTCPeerConnection&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124;&#124; window.mozRTCPeerConnection&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124;&#124; window.webkitRTCPeerConnection;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> useWebKit = !!window.webkitRTCPeerConnection;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> mediaConstraints = &#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optional: [&#123;RtpDataChannels: <span class="keyword">true</span><span>&#125;]&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> servers = &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iceServers: [&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;urls: <span class="string">&quot;stun:stun.services.mozilla.com&quot;</span><span>&#125;,&nbsp;&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;urls: <span class="string">&quot;stun:stun.l.google.com:19302&quot;</span><span>&#125;,&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> pc = </span><span class="keyword">new</span><span> RTCPeerConnection(servers, mediaConstraints);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">function</span><span> handleCandidate(candidate)&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> ip_regex = /([0-9]&#123;1,3&#125;(&#92;.[0-9]&#123;1,3&#125;)&#123;3&#125;&#124;[a-f0-9]&#123;1,4&#125;(:[a-f0-9]&#123;1,4&#125;)&#123;7&#125;)/&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> hasIp = ip_regex.exec(candidate)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span> (hasIp) &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> ip_addr = ip_regex.exec(candidate)[1];&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(ip_dups[ip_addr] === undefined)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;callback(ip_addr);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ip_dups[ip_addr] = <span class="keyword">true</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;pc.onicecandidate = <span class="keyword">function</span><span>(ice)&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(ice.candidate) &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handleCandidate(ice.candidate.candidate);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;pc.createDataChannel(<span class="string">&quot;&quot;</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;pc.createOffer(<span class="keyword">function</span><span>(result)&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc.setLocalDescription(result, <span class="keyword">function</span><span>()&#123;&#125;, </span><span class="keyword">function</span><span>()&#123;&#125;);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;, <span class="keyword">function</span><span>()&#123;&#125;);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;setTimeout(<span class="keyword">function</span><span>()&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> lines = pc.localDescription.sdp.split(</span><span class="string">'&#92;n'</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lines.forEach(<span class="keyword">function</span><span>(line)&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(line.indexOf(</span><span class="string">'a=candidate:'</span><span>) === 0)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handleCandidate(line);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;, 1000);&nbsp;&nbsp;</span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>getUserIP((ip) =&gt; &#123;&nbsp;&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;console.log(<span class="string">&quot;ipppp === &quot;</span><span>,ip)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;<span class="comment">//ipppp ===&nbsp;&nbsp;121.90.11.160</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&#125;)&nbsp;&nbsp;</span></li></ol></div>
]]>
</description>
</item><item>
<link>http://pic1.liuxinxiu.com:80/s/336/</link>
<title><![CDATA[js的Blob以及和File、base64的转化]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[H5/JS/CSS]]></category>
<pubDate>Fri, 02 Aug 2024 03:27:47 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/s/336/</guid> 
<description>
<![CDATA[ 
	<style type="text/css">.con li &#123;list-style: none;&#125;</style><div class="con"><div><h2>Blob是什么</h2><p>在JavaScript中，Blob（二进制大对象）对象是一种用于表示原始数据的类文件对象，它存储了任意类型的数据，通常是二进制数据，但也可以包含文本数据或其他格式的数据。Blob对象通常用于在客户端浏览器中处理二进制数据，比如文件上传、数据传输等场景。（Blob对象可以将任意类型的数据转换为二进制形式进行存储和处理。这使得Blob对象成为处理各种数据类型的有效工具，包括文本、图像、音频、视频等。在JavaScript中，Blob对象提供了一种统一的接口来处理这些数据，无论是从用户上传的文件中获取数据，还是从其他来源获取数据，都可以使用Blob对象来进行二进制处理。）</p><h2>Blob的用途</h2><p>Blob对象常见的使用情况包括：</p><ul><li><p>文件上传：当用户通过网页上传文件时，浏览器会创建一个Blob对象来表示上传的文件数据，然后可以将该Blob对象发送到服务器端进行处理。</p></li><li><p>数据传输：在客户端与服务器端进行数据交互时，可以使用Blob对象来存储和传输二进制数据，例如通过XMLHttpRequest或Fetch API发送Blob对象。</p></li><li><p>图像处理：在客户端对图像进行处理时，可以将图像数据存储在Blob对象中，并通过Canvas API等技术进行操作和显示。</p></li><li><p>媒体处理：在处理音频或视频等媒体数据时，可以使用Blob对象来存储和处理媒体数据。</p></li></ul><h2>和file文件流的关系</h2><p>以下是Blob对象和File对象之间的联系和区别：</p><ul><li><p><strong>Blob对象：</strong><br />Blob对象是二进制数据的容器，可以包含任意类型的数据，如文本、图像、音频或视频等。<br />可以通过构造函数 <code>new Blob(data, options)</code> 创建 Blob 对象，其中 <code>data</code> 是包含数据的数组或数组缓冲区，<code>options</code> 是一个可选对象，用于指定 Blob 的 MIME 类型和结束符等信息。</p></li><li><p><strong>File对象：</strong><br />File对象是Blob对象的一种扩展，通常用于表示用户系统中的文件，具有文件名和最后修改日期等属性。<br />可以通过 <code>new File(data, name, options)</code> 构造函数创建 File 对象，其中 <code>data</code> 是包含数据的数组或数组缓冲区，<code>name</code> 是文件名，<code>options</code> 是一个可选对象，用于指定文件的 MIME 类型和最后修改日期等信息。</p></li></ul><p><strong>联系与区别：</strong><br />File对象是Blob对象的子类，因此所有可以对Blob对象执行的操作也同样适用于File对象。<br />File对象在表示文件时具有额外的元数据，如文件名和最后修改日期等。<br />在实际使用中，Blob对象通常用于处理二进制数据，而File对象则用于处理用户系统中的文件，如文件上传和操作。</p><p>因此，可以说File对象是Blob对象的一种特殊情况，用于在JavaScript中表示用户系统中的文件，并提供了额外的文件相关的属性。</p><h2>Blob和File文件流，base64的转化</h2><p><strong>Blob对象转文件：</strong> 可以使用<code>File</code>构造函数将Blob对象转换为文件对象。<code>File</code>构造函数接受一个Blob对象和一个文件名作为参数，然后返回一个文件对象。</p></div><div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="keyword">var</span><span> blob = </span><span class="keyword">new</span><span> Blob([</span><span class="string">&quot;blob data&quot;</span><span>], &#123; type: </span><span class="string">&quot;text/plain&quot;</span><span> &#125;);&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">var</span><span> file = </span><span class="keyword">new</span><span> File([blob], </span><span class="string">&quot;filename.txt&quot;</span><span>);&nbsp;&nbsp;</span></span></li></ol></div><p><span style="box-sizing: border-box; font-weight: 600; color: rgb(64, 64, 64); font-family: -apple-system, BlinkMacSystemFont, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 16px;">Blob对象转Base64：</span><span style="color: rgb(64, 64, 64); font-family: -apple-system, BlinkMacSystemFont, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 16px;"> 可以使用</span><code style="box-sizing: border-box; font-size: 12px; font-family: Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace; padding: 2px 4px; border: none; vertical-align: middle; white-space-collapse: preserve; color: rgb(199, 37, 78); background-color: rgb(242, 242, 242);">FileReader</code><span style="color: rgb(64, 64, 64); font-family: -apple-system, BlinkMacSystemFont, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 16px;">对象将Blob对象转换为Base64编码的字符串。</span><code style="box-sizing: border-box; font-size: 12px; font-family: Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace; padding: 2px 4px; border: none; vertical-align: middle; white-space-collapse: preserve; color: rgb(199, 37, 78); background-color: rgb(242, 242, 242);">FileReader</code><span style="color: rgb(64, 64, 64); font-family: -apple-system, BlinkMacSystemFont, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 16px;">对象可以读取Blob对象中的数据，并以指定的编码格式输出。</span></p><div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="keyword">var</span><span> blob = </span><span class="keyword">new</span><span> Blob([</span><span class="string">&quot;blob data&quot;</span><span>], &#123; type: </span><span class="string">&quot;text/plain&quot;</span><span> &#125;);&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">var</span><span> reader = </span><span class="keyword">new</span><span> FileReader();&nbsp;&nbsp;</span></span></li><li class="alt"><span>reader.readAsDataURL(blob);&nbsp;&nbsp;</span></li><li><span>reader.onload = <span class="keyword">function</span><span> () &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;<span class="keyword">var</span><span> base64String = reader.result;&nbsp;&nbsp;</span></span></li><li><span>&#125;;&nbsp;&nbsp;</span></li></ol></div><p><span style="box-sizing: border-box; font-weight: 600; color: rgb(64, 64, 64); font-family: -apple-system, BlinkMacSystemFont, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 16px;">Base64转Blob对象：</span><span style="color: rgb(64, 64, 64); font-family: -apple-system, BlinkMacSystemFont, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 16px;"> 可以将Base64编码的字符串转换回Blob对象。这可以通过创建一个新的Blob对象并指定Base64字符串的数据类型完成。</span></p><div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="keyword">var</span><span> base64String = </span><span class="string">&quot;base64 data&quot;</span><span>;&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">var</span><span> byteCharacters = atob(base64String);&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">var</span><span> byteNumbers = </span><span class="keyword">new</span><span> Array(byteCharacters.length);&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">for</span><span> (</span><span class="keyword">var</span><span> i = 0; i &lt; byteCharacters.length; i++) &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;byteNumbers[i] = byteCharacters.charCodeAt(i);&nbsp;&nbsp;</span></li><li><span>&#125;&nbsp;&nbsp;</span></li><li class="alt"><span><span class="keyword">var</span><span> byteArray = </span><span class="keyword">new</span><span> Uint8Array(byteNumbers);&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">var</span><span> blob = </span><span class="keyword">new</span><span> Blob([byteArray], &#123; type: </span><span class="string">&quot;image/jpeg&quot;</span><span> &#125;);&nbsp;&nbsp;</span></span></li></ol></div></div>
]]>
</description>
</item><item>
<link>http://pic1.liuxinxiu.com:80/js-dateTimeFormat/</link>
<title><![CDATA[js格式化iso 8601格式的日期为其他格式-处理默认golang time类型格式问题]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[H5/JS/CSS]]></category>
<pubDate>Thu, 25 Jul 2024 02:29:51 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/js-dateTimeFormat/</guid> 
<description>
<![CDATA[ 
	<p>golang time类型格式默认序列化为json的时候，是iso 8601格式</p><p>比如：2023-03-09T23:43:43+08:00</p><p>ISO 8601 格式的时间表示法，常用于表示世界范围内的时间和日期。ISO 8601 格式使用连字符 &quot;-&quot; 分隔日期和时间部分，并以字母 &quot;T&quot; 分隔日期和时间部分，其中 &quot;T&quot; 后面跟着时间部分。在这个时间表示中，&quot;2023-03-09&quot; 表示日期部分，&quot;23:43:43+08:00&quot; 表示时间部分和时区偏移量。其中，&quot;+08:00&quot; 表示相对于 UTC 时间偏移了 8 个小时，也就是北京时间。</p><p>//[ISO 8601标准中的日期和时间格式解析]</p><p>//2024-07-24T15:36:00+08:00 (要使用&quot;+08:00&quot;,UTC时间偏移了8个小时，也就是北京时间:表示东八区)</p><p>//2024-07-24T15:36:00-05:00 (<span style="color: rgb(51, 51, 51); font-family: -apple-system, Arial, Helvetica, sans-serif;">而&quot;-05:00&quot;则表示西五区的美国东部时间</span>)</p><p>//其中&quot;T&quot;用来分割日期和时间，时间后面跟着的&quot;-07:00&quot;表示西七区，注意&quot;-&quot;是连字符，不是减号</p><p>//其中&quot;Z&quot;为UTC时区标识</p><p><img src="/attachment/2024/07/image/76066-20200309092241978-883046384.png" alt="" /></p><p><img src="/attachment/2024/07/image/2024-07-25_112357.png" width="900" height="543" alt="" /></p><p><img src="/attachment/2024/07/image/2024-07-25_115649.png" alt="" /></p><p>JS - ISO 8601格式时间，转换时间戳方法</p><div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="comment">/*** ISO日期时间戳转时间对象 ***/</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">const</span><span> isoString = </span><span class="string">'2021-03-25T15:00:00Z'</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">const</span><span> date = </span><span class="keyword">new</span><span> Date(isoString);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">/*** 时间对象转ISO日期时间戳字符串 ***/</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">const</span><span> date = </span><span class="keyword">new</span><span> Date();&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">const</span><span> isoString = date.toISOString();&nbsp;&nbsp;</span></span></li></ol></div><p>&nbsp;</p><p>JS时区转换方法</p><div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="comment">//UTC时区时间</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">var</span><span> iso8601String = </span><span class="string">&quot;2022-01-01T12:00:00.000Z&quot;</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">var</span><span> date = </span><span class="keyword">new</span><span> Date(iso8601String);&nbsp;&nbsp;</span></span></li><li><span>console.log(<span class="string">'date'</span><span>, date)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="comment">//打印转换的时间戳</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">var</span><span> utcStr = date.toUTCString(); </span><span class="comment">//转换为UTC字符串</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">var</span><span> ut_localTimeString = date.toLocaleString(</span><span class="string">&quot;en-US&quot;</span><span>, &#123;timeZone: </span><span class="string">&quot;UTC&quot;</span><span>, hour12: </span><span class="keyword">false</span><span>&#125;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//UTC等于伦敦0时区</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">var</span><span> uk_localTimeString = date.toLocaleString(</span><span class="string">&quot;en-US&quot;</span><span>, &#123;timeZone: </span><span class="string">&quot;Europe/London&quot;</span><span>, hour12: </span><span class="keyword">false</span><span>&#125;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//欧洲-伦敦</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">var</span><span> us_localTimeString = date.toLocaleString(</span><span class="string">&quot;en-US&quot;</span><span>, &#123;timeZone: </span><span class="string">&quot;America/New_York&quot;</span><span>, hour12: </span><span class="keyword">false</span><span>&#125;);&nbsp;&nbsp; </span><span class="comment">//北美-纽约</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">var</span><span> cn_localTimeString = date.toLocaleString(</span><span class="string">&quot;en-US&quot;</span><span>, &#123;timeZone: </span><span class="string">&quot;Asia/Shanghai&quot;</span><span>, hour12: </span><span class="keyword">false</span><span>&#125;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//亚洲-上海</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="comment">//console.log('utcStr', utcStr)</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>console.log(<span class="string">'ut_localTimeString(UTC)'</span><span>, ut_localTimeString);&nbsp;&nbsp;</span></span></li><li><span>console.log(<span class="string">'uk_localTimeString(UK)'</span><span>, uk_localTimeString);&nbsp;&nbsp;</span></span></li><li class="alt"><span>console.log(<span class="string">'us_localTimeString(US)'</span><span>, us_localTimeString);&nbsp;&nbsp;</span></span></li><li><span>console.log(<span class="string">'cn_localTimeString(CN)'</span><span>, cn_localTimeString);&nbsp;&nbsp;</span></span></li></ol></div><p>&nbsp;</p><p><img src="/attachment/2024/07/image/2024-07-25_102908.png" width="878" height="471" alt="" /></p><p><img src="/attachment/2024/07/image/2024-07-25_103004.png" width="1048" height="323" alt="" /></p><p><img src="/attachment/2024/07/image/2024-07-25_102934.png" width="830" height="651" alt="" /></p><p>如下JS格式化时间方法</p><div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="keyword">function</span><span> formatDate(dateString, format = </span><span class="string">'yyyy-MM-dd HH:mm:ss'</span><span>) &#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;<span class="keyword">const</span><span> date = </span><span class="keyword">new</span><span> Date(dateString);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;<span class="keyword">const</span><span> year = date.getFullYear();&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;<span class="keyword">const</span><span> month = String(date.getMonth() + 1).padStart(2, </span><span class="string">'0'</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;<span class="keyword">const</span><span> day = String(date.getDate()).padStart(2, </span><span class="string">'0'</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;<span class="keyword">const</span><span> hour = String(date.getHours()).padStart(2, </span><span class="string">'0'</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;<span class="keyword">const</span><span> minute = String(date.getMinutes()).padStart(2, </span><span class="string">'0'</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;<span class="keyword">const</span><span> second = String(date.getSeconds()).padStart(2, </span><span class="string">'0'</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;<span class="keyword">const</span><span> formattedDate = format&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;.replace(/yyyy/g, year)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;.replace(/MM/g, month)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;.replace(/dd/g, day)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;.replace(/HH/g, hour)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;.replace(/mm/g, minute)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;.replace(/ss/g, second);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;<span class="keyword">return</span><span> formattedDate;&nbsp;&nbsp;</span></span></li><li><span>&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="comment">// 示例用法</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>console.log(formatDate(<span class="string">'2022-03-09 23:43:43'</span><span>)); </span><span class="comment">// 输出：2022-03-09 23:43:43</span><span>&nbsp;&nbsp;</span></span></li><li><span>console.log(formatDate(<span class="string">'03/09/2022'</span><span>, </span><span class="string">'yyyy年MM月dd日'</span><span>)); </span><span class="comment">// 输出：2022年03月09日</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>console.log(formatDate(<span class="string">'09 Mar 2022 23:43:43 GMT'</span><span>, </span><span class="string">'yyyy-MM-dd HH:mm:ss'</span><span>)); </span><span class="comment">// 输出：2022-03-09 23:43:43</span><span>&nbsp;&nbsp;</span></span></li></ol></div><p>&nbsp;</p>
]]>
</description>
</item><item>
<link>http://pic1.liuxinxiu.com:80/s/334/</link>
<title><![CDATA[解决JS两数相加的精度问题]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[H5/JS/CSS]]></category>
<pubDate>Thu, 11 Jul 2024 00:40:55 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/s/334/</guid> 
<description>
<![CDATA[ 
	<h3 style="box-sizing: border-box; outline: 0px; padding: 0px; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 18px; color: rgb(79, 79, 79); line-height: 28px; font-synthesis-style: auto; overflow-wrap: break-word; font-variant-ligatures: no-common-ligatures;">JS中小数相加存在的精度问题</h3><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; font-size: 16px; color: rgb(77, 77, 77); line-height: 26px; overflow: auto hidden; font-synthesis-style: auto; overflow-wrap: break-word; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-variant-ligatures: no-common-ligatures;">首先来看一段示例：</p><div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span>console.log(0.1+0.2);</span><span class="comment">//0.30000000000000004</span><span>&nbsp;&nbsp;</span></span></li><li><span>console.log(0.2+0.7);<span class="comment">//0.8999999999999999</span><span>&nbsp;&nbsp;</span></span></li></ol></div><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow: auto hidden; font-synthesis-style: auto; overflow-wrap: break-word;"><font color="#4d4d4d" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif"><span style="font-size: 16px; font-variant-ligatures: no-common-ligatures;">JS中两数小数相加产生精度问题的原因：</span></font></p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow: auto hidden; font-synthesis-style: auto; overflow-wrap: break-word;"><font color="#4d4d4d" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif"><span style="font-size: 16px; font-variant-ligatures: no-common-ligatures;">1、js中的数字类型只有number类型，不区分浮点型和整形，直接以浮点型double类型（双精度浮点类型）参与运算。</span></font></p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow: auto hidden; font-synthesis-style: auto; overflow-wrap: break-word;"><font color="#4d4d4d" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif"><span style="font-size: 16px; font-variant-ligatures: no-common-ligatures;">2、十进制数在做加减法运算前，首先转换为二进制类型再做相加减运算。</span></font></p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow: auto hidden; font-synthesis-style: auto; overflow-wrap: break-word;"><font color="#4d4d4d" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif"><span style="font-size: 16px; font-variant-ligatures: no-common-ligatures;">3、一些浮点数在转换为二进制数是会出现无线循环的情况，但由于double数据类型是以64位存储表示一个数据，其中第1位为符号位，第2位到第12位为指数位，其余52位为小数位，如此一来，一些浮点数转换为二进制产生无限循环的情况下，double类型数据只能存储64位，所以产生精度缺失问题。</span></font></p><h3 style="box-sizing: border-box; outline: 0px; padding: 0px; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 18px; color: rgb(79, 79, 79); line-height: 28px; font-synthesis-style: auto; overflow-wrap: break-word; font-variant-ligatures: no-common-ligatures;">解决办法</h3><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; font-size: 16px; color: rgb(77, 77, 77); line-height: 26px; overflow: auto hidden; font-synthesis-style: auto; overflow-wrap: break-word; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-variant-ligatures: no-common-ligatures;">该方法仅为其中一个办法：</p><div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span>&lt;script&gt;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">// 精确乘法计算</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">function</span><span> FloatMul(arg1, arg2) &#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> m = 0,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s1 = arg1.toString(),<span class="comment">//将第一个数据转换成字符出类型</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s2 = arg2.toString();<span class="comment">//将第二个数据转换成字符出类型</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">try</span><span> &#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m += s1.split(<span class="string">&quot;.&quot;</span><span>)[1].length;</span><span class="comment">//截取数据的小数部分，得到小数位数</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; <span class="keyword">catch</span><span> (e) &#123;&#125;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">try</span><span> &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m += s2.split(<span class="string">&quot;.&quot;</span><span>)[1].length;</span><span class="comment">//截取数据的小数部分，得到小数位数</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//将两个数据的小数位数长度相加</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; <span class="keyword">catch</span><span> (e) &#123;&#125;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> result = (Number(s1.replace(</span><span class="string">&quot;.&quot;</span><span>, </span><span class="string">&quot;&quot;</span><span>)) * Number(s2.replace(</span><span class="string">&quot;.&quot;</span><span>, </span><span class="string">&quot;&quot;</span><span>))) / Math.pow(10, m);</span><span class="comment">//将两个数扩大对应的小数位数倍转换成数字类型在相乘，乘完再除于对应的扩大倍数得到最终结果</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span> isNaN(result) ? 0 : result;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//获得两个小数相加的精确值</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">const</span><span> accountAdd = (arg1, arg2) =&gt; &#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let r1, r2, m;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">try</span><span> &#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1 = arg1.toString().split(<span class="string">&quot;.&quot;</span><span>)[1].length;</span><span class="comment">//将第一个数据转换成字符出类型，截取数据的小数部分，得到小数位数</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; <span class="keyword">catch</span><span> (e) &#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1 = 0;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">try</span><span> &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r2 = arg2.toString().split(<span class="string">&quot;.&quot;</span><span>)[1].length;</span><span class="comment">//将第一个数据转换成字符出类型，截取数据的小数部分，得到小数位数</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; <span class="keyword">catch</span><span> (e) &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r2 = 0;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m = Math.pow(10, Math.max(r1, r2));<span class="comment">//取出得到的最长位数，将10扩大最长位数倍</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span> (FloatMul(arg1, m) + FloatMul(arg2, m)) / m;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let sum = accountAdd(2.3443, -1.987);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(sum);<span class="comment">//0.3573</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/script&gt;&nbsp;&nbsp;</span></li></ol></div><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow: auto hidden; font-synthesis-style: auto; overflow-wrap: break-word;"><font color="#4d4d4d" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif"><span style="font-size: 16px; font-variant-ligatures: no-common-ligatures;">思路：</span></font></p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow: auto hidden; font-synthesis-style: auto; overflow-wrap: break-word;"><font color="#4d4d4d" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif"><span style="font-size: 16px; font-variant-ligatures: no-common-ligatures;">1、先将两个小数数据用精确乘法扩大相同倍数，扩大后相加再处于扩大倍数得到最后结果。</span></font></p>
]]>
</description>
</item><item>
<link>http://pic1.liuxinxiu.com:80/s/330/</link>
<title><![CDATA[Vue (preventReClick)防暴点 +防抖（debounce）和节流（throttle）函数]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[H5/JS/CSS]]></category>
<pubDate>Wed, 27 Sep 2023 10:49:06 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/s/330/</guid> 
<description>
<![CDATA[ 
	<p>&nbsp;1. 防暴点（preventReClick）</p><div>快速点击按钮时会频繁重复调用接口，为了防止这种情况，要对相应的按钮进行防暴力重复点击处理，最好是使用函数防抖或者函数截流来处理，但是现在已经要修改的按钮太多了，于是换一种方法，用指令的方式来达到相识的效果。</div><div>1.创建utils文件夹，在该文件夹下创建preventReClick.js文件</div><div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="keyword">export</span><span>&nbsp;</span><span class="keyword">default</span><span>&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;install(Vue)&nbsp;&#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Vue.directive(<span class="string">'preventReClick'</span><span>,&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inserted:&nbsp;<span class="keyword">function</span><span>&nbsp;(el,&nbsp;binding)&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(el.disabled)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;el.addEventListener(<span class="string">'click'</span><span>,&nbsp;(e)&nbsp;=&gt;&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(!el.disabled)&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;el.disabled&nbsp;=&nbsp;<span class="keyword">true</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setTimeout(()&nbsp;=&gt;&nbsp;&#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;el.disabled&nbsp;=&nbsp;<span class="keyword">false</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,&nbsp;binding.value&nbsp;&#124;&#124;&nbsp;3000)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//binding.value可以自行设置。如果设置了则跟着设置的时间走</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//例如：v-preventReClick='500'</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;<span class="keyword">else</span><span>&nbsp;&#123;&nbsp;</span><span class="comment">//&nbsp;disabled为true时，阻止默认的@click事件</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.preventDefault()&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.stopPropagation()&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;),&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li></ol></div><div><span style="box-sizing: border-box; outline: 0px; font-weight: 700; overflow-wrap: break-word; color: rgb(77, 77, 77); font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; font-variant-ligatures: no-common-ligatures;">2.在main.js中全局引用</span></div><div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="comment">//&nbsp;防止多次点击</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">import</span><span>&nbsp;preventReClick&nbsp;from&nbsp;</span><span class="string">'@/util/preventReClick&nbsp;'</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>Vue.use(preventReClick);&nbsp;&nbsp;</span></li></ol></div><div><span style="box-sizing: border-box; outline: 0px; font-weight: 700; overflow-wrap: break-word; color: rgb(77, 77, 77); font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; font-variant-ligatures: no-common-ligatures;">3.在触发事件的按钮上就可以直接使用指令(button按钮和其他元素都可)</span></div><div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span>&lt;div&nbsp;</span><span class="keyword">class</span><span>=</span><span class="string">&quot;comment-btn&quot;</span><span>&nbsp;@click=</span><span class="string">&quot;submitMes()&quot;</span><span>&nbsp;v-preventReClick=</span><span class="string">&quot;3000&quot;</span><span>&gt;发送&lt;/div&gt;&nbsp;&nbsp;</span></span></li><li><span>&lt;el-button&nbsp;@click=<span class="string">&quot;submitMes()&quot;</span><span>&nbsp;v-preventReClick=</span><span class="string">&quot;3000&quot;</span><span>&gt;发送&lt;/el-button&gt;&nbsp;&nbsp;</span></span></li></ol></div><div><h3 style="box-sizing: border-box; outline: 0px; margin: 24px 0px 8px; padding: 0px; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 18px; color: rgb(79, 79, 79); line-height: 28px; overflow-wrap: break-word; font-variant-ligatures: no-common-ligatures;">2. 防抖（debounce）</h3><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; font-size: 16px; color: rgb(77, 77, 77); line-height: 26px; overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-variant-ligatures: no-common-ligatures;"><span style="box-sizing: border-box; outline: 0px; font-weight: 700; overflow-wrap: break-word;">用户停下操作，就执行函数；只要不停止操作，永远不会执行函数内的操作</span><br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />使用场景：防抖常应用于用户进行搜索输入节约请求资源，<br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />eg：原来watch用户输入值改变马上请求接口 ，加入防抖，停止输入操作才会对接口进行访问</p><div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="comment">/**</span>&nbsp;</span></li><li><span><span class="comment">&nbsp;*&nbsp;@description&nbsp;函数防抖&nbsp;触发高频时间后n秒内函数只会执行一次,如果n秒内高频时间再次触发,则重新计算时间。</span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;*&nbsp;@param&nbsp;&#123;Function&#125;&nbsp;func&nbsp;需要执行的函数</span>&nbsp;</span></li><li><span><span class="comment">&nbsp;*&nbsp;@param&nbsp;&#123;Number&#125;&nbsp;wait&nbsp;间隔时间&nbsp;默认200ms</span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;*&nbsp;@param&nbsp;&#123;Boolean&#125;&nbsp;immediate&nbsp;&nbsp;是否立即执行&nbsp;true(默认)&nbsp;表立即执行，false&nbsp;表非立即执行</span>&nbsp;</span></li><li><span><span class="comment">&nbsp;*&nbsp;@return&nbsp;&#123;*&#125;</span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">export</span><span>&nbsp;</span><span class="keyword">function</span><span>&nbsp;VueDebounce(func,&nbsp;wait&nbsp;=&nbsp;200,&nbsp;immediate&nbsp;=&nbsp;</span><span class="keyword">true</span><span>)&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;timeout&nbsp;=&nbsp;<span class="keyword">null</span><span>;&nbsp;&nbsp;</span><span class="comment">//&nbsp;定时器</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;</span><span class="keyword">function</span><span>&nbsp;()&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;that&nbsp;=&nbsp;<span class="keyword">this</span><span>,&nbsp;</span><span class="comment">//&nbsp;this对象</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;args&nbsp;=&nbsp;arguments;&nbsp;<span class="comment">//&nbsp;参数</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(timeout)&nbsp;clearTimeout(timeout);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(immediate&nbsp;===&nbsp;</span><span class="keyword">true</span><span>)&nbsp;&#123;&nbsp;</span><span class="comment">//&nbsp;立即执行</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;callNow&nbsp;=&nbsp;!timeout;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeout&nbsp;=&nbsp;setTimeout(()&nbsp;=&gt;&nbsp;&#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeout&nbsp;=&nbsp;<span class="keyword">null</span><span>;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,&nbsp;wait)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(callNow)&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;func.apply(that,&nbsp;args);&nbsp;//&nbsp;普通用法</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that[func](...args);&nbsp;<span class="comment">//&nbsp;vue用法</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">else</span><span>&nbsp;&#123;&nbsp;</span><span class="comment">//&nbsp;非立即执行</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeout&nbsp;=&nbsp;setTimeout(()&nbsp;=&gt;&nbsp;&#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;func.apply(this,&nbsp;args);&nbsp;//&nbsp;普通用法</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that[func](...args);&nbsp;<span class="comment">//&nbsp;vue用法</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,&nbsp;wait);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li></ol></div><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; font-size: 16px; color: rgb(77, 77, 77); line-height: 26px; overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-variant-ligatures: no-common-ligatures;">用法：</p><div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="keyword">import</span><span>&nbsp;&#123;VueDebounce&#125;&nbsp;from&nbsp;</span><span class="string">&quot;@/util/index&quot;</span><span>&nbsp;&nbsp;</span></span></li><li><span>methods:&nbsp;&#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;点击事件&nbsp;函数防抖</span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;用法：&lt;el-button&nbsp;@click=&quot;debounceHandel&quot;&gt;点击测试&lt;/el-button&gt;</span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;debounceHandel:&nbsp;VueDebounce(<span class="string">&quot;handlerFunc&quot;</span><span>),&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;点击事件：真正执行的函数</span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;handlerFunc(type)&nbsp;&#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(<span class="string">&quot;测试防抖事件&quot;</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">this</span><span>.$emit(</span><span class="string">&quot;click&quot;</span><span>,</span><span class="string">&quot;这是参数&quot;</span><span>);&nbsp;</span><span class="comment">//&nbsp;如果用普通用法，则这里会找不到$emit，因为this还往上继承了vue的对象</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;,&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;</span></li></ol></div><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow: auto hidden; overflow-wrap: break-word;"><font color="#4d4d4d" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif"><span style="font-size: 16px; font-variant-ligatures: no-common-ligatures;">3. 节流（throttle）</span></font></p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow: auto hidden; overflow-wrap: break-word;"><font color="#4d4d4d" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif"><span style="font-size: 16px; font-variant-ligatures: no-common-ligatures;">高频时间触发,但n秒内只会执行一次,所以节流会稀释函数的执行频率，是个固定的过程 ，如限制1s，则1s内只执行一次，无论怎样，都在会1s内执行相应的操作</span></font><font color="#4d4d4d" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif"><span style="font-size: 16px; font-variant-ligatures: no-common-ligatures;"><br /></span></font></p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow: auto hidden; overflow-wrap: break-word;"><font color="#4d4d4d" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif"><span style="font-size: 16px; font-variant-ligatures: no-common-ligatures;">使用场景：和防抖使用场景差不多，关键看固定时间内（1s）需要反馈，需要反馈使用节流，即：无论用户是否停下操作，都会固定时间执行函数操作</span></font></p><div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span>*&nbsp;@description&nbsp;函数节流&nbsp;&nbsp;</span></span></li><li><span>*&nbsp;@param&nbsp;&#123;Function&#125;&nbsp;func&nbsp;函数&nbsp;&nbsp;</span></li><li class="alt"><span>*&nbsp;@param&nbsp;&#123;Number&#125;&nbsp;wait&nbsp;延迟执行毫秒数,默认200&nbsp;&nbsp;</span></li><li><span>*&nbsp;@param&nbsp;&#123;Number&#125;&nbsp;type&nbsp;1&nbsp;表时间戳版，2&nbsp;表定时器版&nbsp;&nbsp;</span></li><li class="alt"><span>*/&nbsp;&nbsp;</span></li><li><span>xport&nbsp;<span class="keyword">function</span><span>&nbsp;VueThrottle(func,&nbsp;wait=200&nbsp;,type)&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(type===1)&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;previous&nbsp;=&nbsp;0;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&#125;<span class="keyword">else</span><span>&nbsp;</span><span class="keyword">if</span><span>(type===2)&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;timeout;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;</span><span class="keyword">function</span><span>()&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;that=&nbsp;<span class="keyword">this</span><span>;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;args&nbsp;=&nbsp;arguments;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(type===1)&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;now&nbsp;=&nbsp;Date.now();&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(now&nbsp;-&nbsp;previous&nbsp;&gt;&nbsp;wait)&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;func.apply(that,&nbsp;args);&nbsp;//&nbsp;普通用法</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that[func](...args);&nbsp;<span class="comment">//&nbsp;vue用法</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;previous&nbsp;=&nbsp;now;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<span class="keyword">else</span><span>&nbsp;</span><span class="keyword">if</span><span>(type===2)&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(!timeout)&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeout&nbsp;=&nbsp;setTimeout(()&nbsp;=&gt;&nbsp;&#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeout&nbsp;=&nbsp;<span class="keyword">null</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;func.apply(that,&nbsp;args)</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that[func](...args);&nbsp;<span class="comment">//&nbsp;vue用法</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,&nbsp;wait)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li></ol></div><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow: auto hidden; overflow-wrap: break-word;"><span style="color: rgb(77, 77, 77); font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; font-variant-ligatures: no-common-ligatures;">用法：</span></p><div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="keyword">import</span><span>&nbsp;&#123;VueThrottle&#125;&nbsp;from&nbsp;</span><span class="string">&quot;@/util/index&quot;</span><span>&nbsp;&nbsp;</span></span></li><li><span>methods:&nbsp;&#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;点击事件&nbsp;函数防抖</span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;用法：&lt;el-button&nbsp;@click=&quot;throttleHandel&quot;&gt;点击测试&lt;/el-button&gt;</span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;throttleHandel:&nbsp;VueThrottle(<span class="string">&quot;handlerFunc&quot;</span><span>),&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;点击事件：真正执行的函数</span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;handlerFunc(type)&nbsp;&#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(<span class="string">&quot;测试防抖事件&quot;</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">this</span><span>.$emit(</span><span class="string">&quot;click&quot;</span><span>,</span><span class="string">&quot;这是参数&quot;</span><span>);&nbsp;</span><span class="comment">//&nbsp;如果用普通用法，则这里会找不到$emit，因为this还往上继承了vue的对象</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;,&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp; &nbsp;</span></li></ol></div></div>
]]>
</description>
</item><item>
<link>http://pic1.liuxinxiu.com:80/Mock/</link>
<title><![CDATA[Mock的基本语法及使用]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[H5/JS/CSS]]></category>
<pubDate>Fri, 08 Sep 2023 07:17:05 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/Mock/</guid> 
<description>
<![CDATA[ 
	<div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="comment">//定义/mock/index.js</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp; </span></li><li class="alt"><span><span class="keyword">import</span><span> Mock from </span><span class="string">'mockjs'</span><span>&nbsp;&nbsp;</span></span></li><li><span>Mock.mock(<span class="string">&quot;/api/login&quot;</span><span>, &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;code: 200,&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;msg: <span class="string">&quot;登陆成功&quot;</span><span>,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;user: &#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name: <span class="string">&quot;zeng8&quot;</span><span>,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;score: 2048,&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rank: 10&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;,&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;token: <span class="string">&quot;kjkjalsdiiuioayeuryqowierqiwerqowiery&quot;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&#125;)&nbsp;&nbsp;</span></li><li><span><span class="comment">// url可以使用正则匹配</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="comment">// 拦截get请求，返回评论数据</span><span>&nbsp;&nbsp;</span></span></li><li><span>Mock.mock(/&#92;/api&#92;/feed/, <span class="string">&quot;get&quot;</span><span>, </span><span class="keyword">function</span><span>(config) &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//console.log(&quot;config&quot; , config );</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//通过config可以获取到前端发给服务器的数据</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> po = config.url.indexOf(</span><span class="string">&quot;?&quot;</span><span>); </span><span class="comment">//获取问号的位置</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span> (po != -1) &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> query = config.url.slice(po + 1); </span><span class="comment">//获取到查询参数current=4转换为&#123;current: 4&#125;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> arr = query.split(</span><span class="string">&quot;&amp;&quot;</span><span>); </span><span class="comment">//按&amp;分割为数组</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> search = &#123;&#125;; </span><span class="comment">//定义个对象</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arr.forEach(item =&gt; &#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> temp = item.split(</span><span class="string">&quot;=&quot;</span><span>); </span><span class="comment">//把数组每个元素按等于分割[current,4]</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;search[temp[0]] = temp[1]; <span class="comment">//search[ &quot;current&quot;] =4</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">// 返回一个随机数据</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span> Mock.mock(&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;code&quot;</span><span>: 0,&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;data&#124;4&quot;</span><span>: [&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id: <span class="string">&quot;@id&quot;</span><span>,&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg: <span class="string">&quot;@cparagraph(2,3)&quot;</span><span>, </span><span class="comment">//段落2-3行</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name: <span class="string">&quot;@cname&quot;</span><span>, </span><span class="comment">//随机中文名</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;date: <span class="string">&quot;@datetime&quot;</span><span> </span><span class="comment">//随机日期</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;],&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;pagnation&quot;</span><span>: &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;total&#124;10-25&quot;</span><span>: 1,&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;size&quot;</span><span>: 4,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;pageTotal&#124;4-10&quot;</span><span>: 1,&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;current&quot;</span><span>: search.current,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;)&nbsp;&nbsp;</span></li><li class="alt"><span>&#125;)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp; </span></li><li class="alt"><span>Mock.mock(<span class="string">&quot;/api/test&quot;</span><span>, Mock.mock(&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;name: <span class="string">&quot;@cname&quot;</span><span>, </span><span class="comment">//随机中文名</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;age&#124;100-200&quot;</span><span>: 1, </span><span class="comment">//100-200的随机数</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;price&#124;10-50.2-5&quot;</span><span>: 1, </span><span class="comment">//10-50随机数 小数点2-5位</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;live&#124;1-2&quot;</span><span>: </span><span class="keyword">true</span><span>, </span><span class="comment">//随机true或false</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;start&#124;1-5&quot;</span><span>: </span><span class="string">&quot;⭐&quot;</span><span>, </span><span class="comment">//把字符串重复1-5次</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;friend&#124;2&quot;</span><span>: [</span><span class="string">&quot;小红&quot;</span><span>, </span><span class="string">&quot;小明&quot;</span><span>, </span><span class="string">&quot;小刚&quot;</span><span>, </span><span class="string">&quot;小白&quot;</span><span>, </span><span class="string">&quot;小蓝&quot;</span><span>], </span><span class="comment">//1是挑一个大于1是重复n次</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;props&#124;1-3&quot;</span><span>: &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name: <span class="string">&quot;mm&quot;</span><span>,&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;age: 22,&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;leg: 2,&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;job: <span class="string">&quot;web&quot;</span><span>,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eye: 2&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;,&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;tel&quot;</span><span>: /13&#92;d&#123;9&#125;/,&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;des&quot;</span><span>: </span><span class="keyword">function</span><span>() &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span> `大家好，我的名字是$&#123;</span><span class="keyword">this</span><span>.name&#125;，今年$&#123;</span><span class="keyword">this</span><span>.age&#125;岁`&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;,&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;data&#124;10&quot;</span><span>: [&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;id&#124;+1&quot;</span><span>: 1024,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;ID&quot;</span><span>: </span><span class="string">&quot;@id&quot;</span><span>,&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;date: <span class="string">&quot;@date&quot;</span><span>,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;time: <span class="string">&quot;@time&quot;</span><span>,&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;datetime: <span class="string">&quot;@datetime&quot;</span><span>,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name: <span class="string">&quot;@cname&quot;</span><span>,&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pic: <span class="string">&quot;@dataImage('200x100')&quot;</span><span>,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;description: <span class="string">&quot;@cparagraph(1,3)&quot;</span><span>,&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title: <span class="string">&quot;@ctitle(8,12)&quot;</span><span>,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url: /http:&#92;/&#92;/www&#92;.[a-z]&#123;2,8&#125;&#92;.(com&#124;cn&#124;org)/,&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;email: /[4-8]@&#92;.(126&#124;qq&#124;163)&#92;.(com&#124;cn&#124;org)/,&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;address: <span class="string">&quot;@county(true)&quot;</span><span>, </span><span class="comment">//省市区地址</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;]&nbsp;&nbsp;</span></li><li class="alt"><span>&#125;))&nbsp;&nbsp;</span></li></ol></div>
]]>
</description>
</item><item>
<link>http://pic1.liuxinxiu.com:80/vue_setTimeout/</link>
<title><![CDATA[vue封装定时器]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[H5/JS/CSS]]></category>
<pubDate>Thu, 07 Sep 2023 05:29:46 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/vue_setTimeout/</guid> 
<description>
<![CDATA[ 
	<p>main.js 文件</p><div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="comment">/*** sleep ***/</span><span>&nbsp;&nbsp;</span></span></li><li><span>Vue.prototype.$sleep = time =&gt; &#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;<span class="keyword">return</span><span> </span><span class="keyword">new</span><span> Promise((resolve, reject) =&gt; &#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;window.setTimeout(() =&gt; &#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resolve(<span class="keyword">true</span><span>)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;, time)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&#125;)&nbsp;&nbsp;</span></li><li><span>&#125;&nbsp;&nbsp;</span></li></ol></div><p>增加测试页面</p><div class="codeText"><div class="codeHead">XML/HTML代码</div><ol start="1" class="dp-xml"><li class="alt"><span><span>&lt;!--&nbsp;&nbsp;</span></span></li><li><span> * @Description: npage.vue&nbsp;&nbsp;</span></li><li class="alt"><span> * @Version: 1.0&nbsp;&nbsp;</span></li><li><span> * @Author: Jesse Liu </span></li><li class="alt"><span> * @Date: 2022-08-01 20:32:06&nbsp;&nbsp;</span></li><li><span> * @LastEditors: Jesse Liu&nbsp;&nbsp;</span></li><li class="alt"><span> * @LastEditTime: 2023-09-07 13:24:11&nbsp;&nbsp;</span></li><li><span>--<span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">template</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">div</span><span> </span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;wscn-http404-container&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">h2</span><span> </span><span class="attribute">style</span><span>=</span><span class="attribute-value">&quot;font-weight: normal; line-height: 160%;&quot;</span><span class="tag">&gt;</span><span class="attribute">userInfo</span><span> ========= &#123;&#123; userInfo &#125;&#125;</span><span class="tag">&lt;/</span><span class="tag-name">h2</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">h2</span><span> </span><span class="attribute">style</span><span>=</span><span class="attribute-value">&quot;font-weight: normal; line-height: 160%;&quot;</span><span class="tag">&gt;</span><span class="attribute">configInformation</span><span> ========= &#123;&#123; configInformation &#125;&#125;</span><span class="tag">&lt;/</span><span class="tag-name">h2</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">h1</span><span> </span><span class="attribute">style</span><span>=</span><span class="attribute-value">&quot;line-height:300px; text-align:center&quot;</span><span class="tag">&gt;</span><span>npage.vue (新测试文件)</span><span class="tag">&lt;/</span><span class="tag-name">h1</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">div</span><span class="tag">&gt;</span><span>time:</span><span class="tag">&lt;/</span><span class="tag-name">div</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">div</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="tag">&lt;/</span><span class="tag-name">template</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="tag">&lt;</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>import &#123; mapState &#125; from &quot;vuex&quot;;&nbsp;&nbsp;</span></li><li><span>import &#123; parseTime &#125; from '@/utils'&nbsp;&nbsp;</span></li><li class="alt"><span>import &#123; downloadFile &#125; from &quot;@/utils/getFile&quot;;&nbsp;&nbsp;</span></li><li><span>export default &#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;name: 'PageTest',&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;computed: &#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;...mapState(&quot;user&quot;, [&quot;userInfo&quot;,&quot;configInformation&quot;]),&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;message() &#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 'PageTest'&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;,&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;parseTime: parseTime&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&#125;,&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;mounted() &#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;this.$store.dispatch(&quot;case/casesList/downloadFile&quot;,&#123;&#125;).then((res)=<span class="tag">&gt;</span><span>&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// let <span class="attribute">data</span><span> = </span><span class="attribute-value">res</span><span>.data;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// let <span class="attribute">headers</span><span> = </span><span class="attribute-value">res</span><span>.headers;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// /*** 调用下载文件 ***/&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// downloadFile(data, headers)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;/*** 多定时器同时调用 ***/&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;this.getStateA();&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;this.getStateB();&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;/*** 业务请求接口调用示例 ***/&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;this.casePage();&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&#125;,&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;methods: &#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;/*** 定时器演示方法 ***/&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;async getStateA()&#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*** 定时器只管计算时间钩子标记 ***/&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('sleepStateA ~~~ 开始')&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*** 多定时处理任务A ***/&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.time('sleepStateA');&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let <span class="attribute">sleepStateA</span><span> = </span><span class="attribute-value">await</span><span> this.$sleep(5000);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('sleepStateA ~~~ 结束', sleepStateA)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.timeEnd('sleepStateA');&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return sleepStateA;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;,&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;/*** 定时器演示方法 ***/&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;async getStateB()&#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*** 定时器只管计算时间钩子标记 ***/&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('sleepStateB ~~~ 开始')&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*** 多定时处理任务B ***/&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.time('sleepStateB');&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let <span class="attribute">sleepStateB</span><span> = </span><span class="attribute-value">await</span><span> this.$sleep(10000);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('sleepStateB ~~~ 结束', sleepStateB)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.timeEnd('sleepStateB');&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return sleepStateB;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;,&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;/*** 模拟示例业务的状态 ***/&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;async getCaseState()&#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*** 定时器只管计算时间钩子标记 ***/&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let <span class="attribute">sleepStateCase</span><span> = </span><span class="attribute-value">await</span><span> this.$sleep(10000);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return sleepStateCase;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;,&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;/*** 模拟示例业务主方法 ***/&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;async casePage(<span class="attribute">state</span><span> = </span><span class="attribute-value">true</span><span>, </span><span class="attribute">n</span><span> = </span><span class="attribute-value">0</span><span>)&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*** 定义及获取数据状态 ***/&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let <span class="attribute">runling</span><span> = </span><span class="attribute-value">true</span><span>;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let <span class="attribute">getCaseState</span><span> = </span><span class="attribute-value">await</span><span> this.getCaseState();&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*** 业务逻辑处理及使用 ***/&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(state &amp;&amp; getCaseState) &#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*** 请求接口拿状态和后端约定状态码(根据状态码去更改runling的布尔值) ***/&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 写你的vuex调用方法，如：this.$store.dispatch('user/record', &#123;&#125;)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*** 以下代码是为了演示模拟3次请求后，状态变更，供参考 ***/&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*** 假设后端接口告诉你可以终止执行调用的状态 (比如后端调用3次后就更改了状态) ***/&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let <span class="attribute">index</span><span> = n;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index +=1;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('第['+ index + ']次调用后端接口~~');&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(index <span class="tag">&gt;</span><span>= 3) &#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">runling</span><span> = </span><span class="attribute-value">false</span><span>;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.casePage(runling, index);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('===========================================&#92;n定时器已经结束关停，累计调用共: ' + n + '次~~');&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li><li><span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">style</span><span> </span><span class="attribute">lang</span><span>=</span><span class="attribute-value">&quot;scss&quot;</span><span> scoped</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="tag">&lt;/</span><span class="tag-name">style</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li></ol></div><p>&nbsp;</p>
]]>
</description>
</item>
</channel>
</rss>