[英]How to output 'i' in nodejs
我目前正在嘗試查看是否使用了“steam 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。
有更清潔的方法可以做到這一點。 特別是,您可以使用迭代器來簡化這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.