循环值不能在节点 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)
}
我试图在 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)
}