ns09005264 最近的时间轴更新
ns09005264

ns09005264

V2EX 第 156949 号会员,加入于 2016-01-26 11:00:47 +08:00
今日活跃度排名 15935
ns09005264 最近回复了
先用 docker0 这个虚拟网卡的 ip 试试连通性吧,也就是 172.0.0.0/24 这个网段的 ip ,这个网段不用走路由器。
没有 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 完成后的回调都能正确获得自己的索引。
12 天前
回复了 YugenFring 创建的主题 程序员 问一下关于 Spring 做全栈的事情
论坛、博客之类的这套技术倒是很好,还方便 seo 。
只要页面稍微复杂点,比如实时通信、通知、列表查询之类的就不行了。
总体而言不建议学了,只要你涉及到前端的领域,总有一天要接触 node 前端工程化的。
12 天前
回复了 junwind 创建的主题 程序员 大佬们好, JWT 如何防止多端登录 ?
@FYFX 只是用 user-agnet 举个例子,不想那么严格的时候可以根据 user-agent 来判断,只要别在验证不通过时明确告知原因就能阻挡一部分非法请求。想严格一点可以用浏览器指纹或设备 id 之类的。总之这是多设备识别的时间,有状态的 sessionID 能做到的,无状态的 jwt token 也能做到。
12 天前
回复了 junwind 创建的主题 程序员 大佬们好, JWT 如何防止多端登录 ?
https://gateway.pinata.cloud/ipfs/QmWv2NmD5iLVTsSo3QkEsGnHKxtQqMoeZZTs76ohGz1aHC

图里这个 jwt token 是在 linux 下 firefox 中登录时生成的,如果用户把这个 token 拿到 windows 上的 chrome 去用,只需要获取请求头中的 user-agent 就可以判断它是异端登录。整个过程依旧是无状态的,根本不需要在服务器的什么地方维护用户的登录和设备信息。
12 天前
回复了 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 维坐标,也可以将坐标线性化。
所以你说的二维坐标可能是二维数组的索引吧。
23 天前
回复了 bddxg 创建的主题 Linux 想转 manjaro 但是有几个问题困扰着我
推荐装 ArcoLinux ,注意是 Arco 。相比 ArchLinux ,它的安装程序可以帮你解决一些最基本但你可能不清楚的问题,比如字体、剪切板、蓝牙、网络管理等。
关于你的需求,1-3: 我不知道在 linux 上有没有这些比较全面的软件的替代品,根据 unix 哲学,你可以通过一系列软件组合达到类似的效果,就是很麻烦。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4782 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 15ms · UTC 09:58 · PVG 17:58 · LAX 02:58 · JFK 05:58
Developed with CodeLauncher
♥ Do have faith in what you're doing.