javascript - 如何在nodejs中输出'i'
问题描述
我目前正在尝试查看是否使用了“蒸汽 ID”;因为我想得到一个不错的..所以我想我会花 5 分钟来制作这个小脚本,但无论我尝试什么,它都不会输出“列表”
const request = require("request");
var fs = require('fs');
var list = fs.readFileSync("list.txt", "utf-8").split("\n");
for(i of list){
request({
method: "GET",
url: "https://steamcommunity.com/id/" + i,
}, (error, response, body) => {
if(body.match("The specified profile could not be found.")) {
console.log(i + "not taken");
} else {
console.log(i + "taken");
}
})
}
脚本有效;并且知道哪个 ID 没有被占用,哪个是.. 但问题是我看不到没有被占用的 ID - 如果有人可以帮助我,那将非常感激!
解决方案
这是您的变量在范围内更改的标准问题,并且范围不是您所期望的。
const request = require("request");
var fs = require('fs');
var list = fs.readFileSync("list.txt", "utf-8").split("\n");
var i;
for (i of list) {
(function(id) {
request({
method: "GET",
url: "https://steamcommunity.com/id/" + id,
}, (error, response, body) => {
if (body.match("The specified profile could not be found.")) {
console.log(id + "not taken");
} else {
console.log(id + "taken");
}
})
})(i);
}
for
由于外部(循环)和请求的处理程序之间没有范围差异,因此在请求i
结束时变量将发生变化。我在您的代码中添加了一个闭包,以确保此变量的副本存在于词法范围内,因此您的处理程序知道它查询的 ID。
有更清洁的方法可以做到这一点。特别是,您可以使用迭代器来简化它。
推荐阅读
- r - 带有百分比且不折叠数据的ggplot条形图?
- opengl - VS2017 在编译 GFLW 应用程序时抛出许多链接器错误(LNK2001)
- django - 如何在 Pythonanywhere 中安装 django-wkhtmltopdf。?
- c++ - c ++类型'complex中的类中的复杂初始化
' 不提供呼叫运算符 - c# - 为什么下一个按钮要花这么长时间才能按下?
- airflow - Airflow:通过网络应用程序配置日期时间变量
- javascript - 如何在 Angular 中更新 const 数组?
- python - 你如何在 Python 中使用 Unix 套接字?
- angular - mat-sidenav-content 正在抛出 MatSidenavContainer 的没有提供者
- python - 仅在验证后才在前一个表单下方显示下一个表单