Javascript 用于将块发送到数据库的循环节点的异步
我需要循环到一个对象数组中,将块发送到服务器以存储在数据库中。就像这个简化的例子:Javascript 用于将块发送到数据库的循环节点的异步,javascript,node.js,Javascript,Node.js,我需要循环到一个对象数组中,将块发送到服务器以存储在数据库中。就像这个简化的例子: (async function () { var array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; var i, j, block, chunk = 3; for (i=0, j=array.length; i<j; i+=chunk) { block = array.slice(i,i+chunk); console.d
(async function () {
var array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
var i, j, block, chunk = 3;
for (i=0, j=array.length; i<j; i+=chunk) {
block = array.slice(i,i+chunk);
console.dir(block);
//Some async promise to do the magic
}
})();
我怎样才能像第二个循环那样将第一个循环转换成块呢?还有比sintax更好的方法吗?您可以使用wait和for。。假设数据库写入函数返回一个承诺,则按顺序写入数据库 如果您愿意,也可以使用标准for循环
const rows=[…数组(5).keys()].map(n=>`entry${n+1}`);
函数writeToDatabaseMock(){
返回新承诺(resolve=>setTimeout(resolve,1000));
}
(异步函数(){
for(行的常量[索引,元素]).entries(){
log(`Writing element#${index+1}到数据库:`,element);
等待writeToDatabaseMock();
}
})();代码>您只需将变量块范围设置为
即可克服闭包问题
(async function () {
var array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for (let i=0, j=array.length, block, chunk = 3; i<j; i+=chunk) {
block = array.slice(i,i+chunk);
console.dir(block);
//Some async promise to do the magic
}
})();
(异步函数(){
var数组=[0,1,2,3,4,5,6,7,8,9];
对于(设i=0,j=array.length,block,chunk=3;i(异步函数(){
var数组=[0,1,2,3,4,5,6,7,8,9];
var i,j,chunk=3;
对于(i=0,j=array.length;ii如果你有一个承诺,只需在它上面打上一个wait
——你已经在一个async
函数中了。否则,使用promise.all
。没有理由传统的for循环会失败,而for-of循环不会失败。提供一个哦,我明白了。我会在剩下的循环中记住这一点。谢谢
(async function () {
var array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for (let i=0, j=array.length, block, chunk = 3; i<j; i+=chunk) {
block = array.slice(i,i+chunk);
console.dir(block);
//Some async promise to do the magic
}
})();
(async function () {
var array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
var i, j, chunk = 3;
for (i=0, j=array.length; i<j; i+=chunk) {
//Now block variable is block-scope
let block = array.slice(i,i+chunk);
console.dir(block);
//Some async promise to do the magic
}
})();