让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