簡體   English   中英

如何在nodejs中輸出'i'

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM