循环值不能在节点 js 中的 knex 内工作

Loop value can not work inside knex in node js

我试图在 knex 函数中获取循环值,但我得到了循环的最终值。

for (i = 0; i < 10; i++) {

    knex_in.raw(query).then(function (result) {
                    console.log(i)
    });

    }

需要帮助。

循环中的计数器 (i) 是一个全局变量。在循环的每次迭代中,您都在创建一个承诺。当您的承诺得到解决时,循环就完成了,因此 i 是最终值。

解决方案是将 i 的值保存在一个作用域变量中。这可以通过几种方式完成,这里有两种:

你可以使用let(取决于ES6支持)

for (let i = 0; i < 10; i++) {

  setTimeout(function() {
    console.log(i);
  }, 500);

}

或者您可以通过创建函数将 i 的值存储在作用域变量中:

function someFunction(value) {
  setTimeout(function() {
    console.log(value);
  }, 500);
}

for (i = 0; i < 10; i++) {
  someFunction(i)
}