V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ns09005264  ›  全部回复第 5 页 / 共 9 页
回复总数  174
1  2  3  4  5  6  7  8  9  
没有 bug ,没人去 github 上看代码,没人看就没有星星,是有这个可能的。
@abccccabc
我重新确认了下,你问题里的代码没问题啊,也不用提取到循环外的函数里,除非在 post 回调函数里使用了 var i 变量,把关键的问题代码隐藏了。
```
var allimg = ["https://www.baidu.com/s/1.jpg", "https://www.baidu.com/s/2.jpg", "https://www.baidu.com/s/3.jpg", "https://www.baidu.com/s/4.jpg"];
var oldcontent = "<img src='https://www.baidu.com/s/1.jpg'><img src='https://www.baidu.com/s/2.jpg'><img src='https://www.baidu.com/s/3.jpg'><img src='https://www.baidu.com/s/4.jpg'>";
for (var i = 0; i < allimg.length; i++) {
post(allimg[i], function(ret) {
oldcontent = oldcontent.replace(ret['oldimgurl'], ret['newimgurl']);
console.log(oldcontent);
});
}
function post(url, callback) {
const time = Math.floor(Math.random() * 100 + 100);
setTimeout(() => callback({"oldimgurl": url, "newimgurl": url + "new"}), time);
}
```
输出:
```
<img src='https://www.baidu.com/s/1.jpgnew'><img src='https://www.baidu.com/s/2.jpgnew'><img src='https://www.baidu.com/s/3.jpgnew'><img src='https://www.baidu.com/s/4.jpgnew'>
```
https://runjs.co/s/IUEhsmWc2
你问题里的代码没有问题啊, oldContent 最终都会被正确替换呀。
有问题的是 for 循环的 var i ,但是你代码里也没有使用,除非你隐藏了和索引 i 相关的代码。
```
var str = "Hello ";
for (var i = 0; i < 5; i++) {
wait().then(() => {
str = str + "i";
console.log("index: ", i, "str: ", str);
});
}
async function wait() {
return new Promise((resolve) => {
const time = Math.floor(Math.random() * 100 + 100);
setTimeout(resolve, time);
});
}
```
这段代码和你的基本一样,输出是这样的:
```
index: 5 str: Hello i
index: 5 str: Hello ii
index: 5 str: Hello iii
index: 5 str: Hello iiii
index: 5 str: Hello iiiii
```
也就是说 var i 类似全局变量

如果把 var i 换成 let i ,输出是这样的:
```
index: 1 str: Hello i
index: 4 str: Hello ii
index: 2 str: Hello iii
index: 0 str: Hello iiii
index: 3 str: Hello iiiii
```
每次 post 完成后的回调都能正确获得自己的索引。
311 天前
回复了 YugenFring 创建的主题 程序员 问一下关于 Spring 做全栈的事情
论坛、博客之类的这套技术倒是很好,还方便 seo 。
只要页面稍微复杂点,比如实时通信、通知、列表查询之类的就不行了。
总体而言不建议学了,只要你涉及到前端的领域,总有一天要接触 node 前端工程化的。
311 天前
回复了 junwind 创建的主题 程序员 大佬们好, JWT 如何防止多端登录 ?
@FYFX 只是用 user-agnet 举个例子,不想那么严格的时候可以根据 user-agent 来判断,只要别在验证不通过时明确告知原因就能阻挡一部分非法请求。想严格一点可以用浏览器指纹或设备 id 之类的。总之这是多设备识别的时间,有状态的 sessionID 能做到的,无状态的 jwt token 也能做到。
311 天前
回复了 junwind 创建的主题 程序员 大佬们好, JWT 如何防止多端登录 ?
https://gateway.pinata.cloud/ipfs/QmWv2NmD5iLVTsSo3QkEsGnHKxtQqMoeZZTs76ohGz1aHC

图里这个 jwt token 是在 linux 下 firefox 中登录时生成的,如果用户把这个 token 拿到 windows 上的 chrome 去用,只需要获取请求头中的 user-agent 就可以判断它是异端登录。整个过程依旧是无状态的,根本不需要在服务器的什么地方维护用户的登录和设备信息。
311 天前
回复了 junwind 创建的主题 程序员 大佬们好, JWT 如何防止多端登录 ?
我觉得,jwt 最大的意义是自带信息。

生成 jwt token 的时候除了必要的用户信息外,还可以加上登录时的设备信息,比如 ip 、user-agent 或其他识别信息等。这样 jwt token 里就包含设备信息了。
后续验证 jwt token 时,看它的请求头里和 jwt token 包含的信息是否对应得上,对不上就是多端使用 jwt token 了

比如该用户在 PC 浏览器上登录了,服务器为此生成了 jwt token ,这个 token 中包含的 user-agent 是 pc 的。
后面该用户把 jwt token 复制到 Android 浏览器上用来使用,但是请求头中的 user-agent 和 jwt token 里的对应不上,那么就是异端登录了。
有种方式可以将多维坐标线性化,用一维数组表示空间信息
https://docs.rs/ndshape/latest/ndshape/

体素游戏一般都有 chunk 概念,chunk 就是线性化坐标数组,加上 chunk 本身也有 3 维坐标,也可以将坐标线性化。
所以你说的二维坐标可能是二维数组的索引吧。
321 天前
回复了 bddxg 创建的主题 Linux 想转 manjaro 但是有几个问题困扰着我
推荐装 ArcoLinux ,注意是 Arco 。相比 ArchLinux ,它的安装程序可以帮你解决一些最基本但你可能不清楚的问题,比如字体、剪切板、蓝牙、网络管理等。
关于你的需求,1-3: 我不知道在 linux 上有没有这些比较全面的软件的替代品,根据 unix 哲学,你可以通过一系列软件组合达到类似的效果,就是很麻烦。
nvim 的这个功能是 bufferline.nvim 这个插件带来的。https://github.com/akinsho/bufferline.nvim
vim 对应的插件不知道应该是 buftabs.vim 吧。
```javascript
let f;
if (flag()) {
f = () => {
foo();
bar();
};
} else {
f = () => bar();
}
for (let i = 0; i < length; i++) {
f();
}
```
2024-01-20 14:20:03 +08:00
回复了 FrankAdler 创建的主题 程序员 求教一个正则的写法
@ns09005264 倒数第二行没法了,只能用额外的判断了。
2024-01-20 14:18:00 +08:00
回复了 FrankAdler 创建的主题 程序员 求教一个正则的写法
[img]https://i.imgur.com/3hEsvJ0.png[/img]

这个咋样
```
((第|s|season)\s*(\d+).*?季?)?(第|e|ep)\s*(\d+)
```
group3 就是季,group3 是空的就是第一季
group5 就是集
2024-01-11 14:14:24 +08:00
回复了 Authorization 创建的主题 程序员 我用 chatgpt 写了一个密码网站
这让我想到一个问题,
一个不会编程的人通过询问 GPT 来实现需求所花的时间,和另一个直接去学习编程然后通过 Github Copilot 来实现需求所花的时间,这两者谁更有性价比。
所以你花了多久写的这个?
2024-01-08 11:19:30 +08:00
回复了 lynan 创建的主题 分享发现 来说说你们认为信达雅的翻译吧
战锤四神
Khorne: 恐虐
Tzeench: 奸奇
Slaanesh: 色孽
Nurgle: 纳垢
中文译名与祂们的背景相当同步。
不知道历史缘由,个人觉得向下移动比向上移动频繁,而食指比中指更灵活,强强联合。
2023-12-19 13:15:05 +08:00
回复了 JasonGrass 创建的主题 程序员 本地文件批量重命名,现在可以用 web 实现了
我用 vim 做文件[批量]重命名的,配合 lf 之类的终端文件管理器选择文件,然后在 vim 中进行操作就可以了,想用正则用正则,想用 V-Block 多行编辑就用。
由于它是基于 mv 命令进行命名的,所以可以做到给不同文件夹里的文件们同时重命名,或者将一个文件夹里的文件分发到不同的文件夹。
2023-12-12 14:58:40 +08:00
回复了 xinghen57 创建的主题 PowerShell 如何确定 powershell 在终端输出的信息是 stdout 还是 stderr?
通过管道符导入到其他接受 stdin 的程序里试试,比如 vim 。像这样: ffmpeg command | vim ,vim 里没有输入就不是 stdin
2023-12-10 12:46:45 +08:00
回复了 Dosenf 创建的主题 程序员 快被 IPV6 逼疯了
openwrt 设置 ipv6 ,有篇文章讲的比较详细,可以让你知道为什么这么设置。
https://post.smzdm.com/p/awzodmpp/
他讲了一些 Ipv6 分配相关的知识。
2023-12-09 22:55:12 +08:00
回复了 sniperking1234 创建的主题 宽带症候群 Clash For Windows 自己疯狂跑流量是怎么回事
7890 这个端口太有名了,公网上开这个端口应该很容易就被扫到,而且也没有加密,随便谁在自己电脑上设置一下 http_proxy=http://你 IP:7890 就能拿你电脑当代理服务器了。
1  2  3  4  5  6  7  8  9  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5509 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 44ms · UTC 07:31 · PVG 15:31 · LAX 23:31 · JFK 02:31
Developed with CodeLauncher
♥ Do have faith in what you're doing.