让new bing写了个启动的脚本,替换了之前的
# 定义一个函数来测试网络连接 function Test-Network { param( [string]$Url = '检测的URL', [int]$Timeout = 500 ) try { # 使用 Invoke-WebRequest 命令来发送 HTTP 请求,并设置超时时间 $respOnse= Invoke-WebRequest -Uri $Url -TimeoutSec ($Timeout / 1000) -UseBasicParsing -ErrorAction Stop # 检查响应状态码是否为 204 if ($response.StatusCode -eq 204) { # 网络正常,返回 $true return $true } else { # 网络异常,返回 $false return $false } } catch { # 发生错误,返回 $false return $false } } # 定义一个函数来设置代理 function Set-Proxy { param( [string]$Proxy = 'http://127.0.0.1:7890' ) # 使用 netsh 命令来设置系统级别的代理,并忽略错误输出 netsh winhttp set proxy $Proxy *>$null } # 定义一个函数来取消代理 function Unset-Proxy { # 使用 netsh 命令来取消系统级别的代理,并忽略错误输出 netsh winhttp reset proxy *>$null } # 定义一个函数来加载模块(根据您的实际情况修改) function Load-Modules { # 超出附言限制,略 } # 调用 Test-Network 函数来测试网络连接情况,并将结果赋值给变量 $networkStatus $networkStatus = Test-Network # 判断变量 $networkStatus 的值是否为 $true if ($networkStatus) { # 如果为 $true ,表示网络正常,直接调用 Load-Modules 函数来加载模块,并结束脚本执行 Load-Modules exit } else { # 如果为 $false ,表示网络异常,尝试调用 Set-Proxy 函数来设置代理,并再次调用 Test-Network 函数来测试网络连接情况,并将结果赋值给变量 $proxyStatus Set-Proxy $proxyStatus = Test-Network # 判断变量 $proxyStatus 的值是否为 $true if ($proxyStatus) { # 如果为 $true ,表示代理有效,调用 Load-Modules 函数来加载模块,并结束脚本执行 Load-Modules exit } else { # 如果为 $false ,表示代理无效,调用 Unset-Proxy 函数来取消代理,并抛出一个异常,提示网络问题,并不加载模块 Unset-Proxy throw 'Network error: cannot access Google with or without proxy.' } }
但是加载模块的过程是同步的,一共要花费2000多ms,有办法继续优化吗?
感觉甚至不如js