Javascript 在异步函数中增加一个计数器,然后检查它是否等于j,这是错误的?值得一读解释-异步/await@SeanMC-我明白你的意思,但这个问题实际上并没有显示任何数组,所以看起来这个问题实际上并不是关于迭代数组(或某个iterable)with是for/of的主题
Javascript 在异步函数中增加一个计数器,然后检查它是否等于j,这是错误的?值得一读解释-异步/await@SeanMC-我明白你的意思,但这个问题实际上并没有显示任何数组,所以看起来这个问题实际上并不是关于迭代数组(或某个iterable)with是for/of的主题,javascript,asynchronous,for-loop,synchronization,Javascript,Asynchronous,For Loop,Synchronization,在异步函数中增加一个计数器,然后检查它是否等于j,这是错误的?值得一读解释-异步/await@SeanMC-我明白你的意思,但这个问题实际上并没有显示任何数组,所以看起来这个问题实际上并不是关于迭代数组(或某个iterable)with是for/of的主题。这是我读过的JS中异步行为的最清晰的例子之一。你有博客吗?ECMAScript示例很好地演示了let可以做什么。所有答案中的AsynchronouseProcess是否都是某种占位符?我得到的是“未定义”asyncronouseProcess
在异步函数中增加一个计数器,然后检查它是否等于
j
,这是错误的?值得一读解释-异步/await@SeanMC-我明白你的意思,但这个问题实际上并没有显示任何数组,所以看起来这个问题实际上并不是关于迭代数组(或某个iterable)with是for/of
的主题。这是我读过的JS中异步行为的最清晰的例子之一。你有博客吗?ECMAScript示例很好地演示了let
可以做什么。所有答案中的AsynchronouseProcess
是否都是某种占位符?我得到的是“未定义”asyncronouseProcess
是原始问题的一部分,所以是的,如果它给出“未定义”,这是正常的。如果您想检查原始问题以及建议的解决方案的工作方式,可以将其替换为任何异步函数。例如:函数asycronouseProcess(fn){setTimeout(fn,100);}
循环的每个迭代是否会等待?@Shamoon yes。它将等待(如果asycronouseProcess()返回承诺)
var i;
var j = 10;
for (i = 0; i < j; i++) {
asynchronousProcess(callbackFunction() {
alert(i);
});
}
someArray.forEach(function(item, i) {
asynchronousProcess(function(item) {
console.log(i);
});
});
var j = 10;
for (var i = 0; i < j; i++) {
(function(cntr) {
// here the value of i was passed into as the argument cntr
// and will be captured in this function closure so each
// iteration of the loop can have it's own value
asynchronousProcess(function() {
console.log(cntr);
});
})(i);
}
var j = 10;
for (var i = 0; i < j; i++) {
asynchronousProcess(i, function(cntr) {
console.log(cntr);
});
}
const j = 10;
for (let i = 0; i < j; i++) {
asynchronousProcess(function() {
console.log(i);
});
}
async function someFunction() {
const j = 10;
for (let i = 0; i < j; i++) {
// wait for the promise to resolve before advancing the for loop
await asynchronousProcess();
console.log(i);
}
}
function someFunction() {
let promises = [];
for (let i = 0; i < 10; i++) {
promises.push(asynchonousProcessThatReturnsPromise());
}
return Promise.all(promises);
}
someFunction().then(results => {
// array of results in order here
console.log(results);
}).catch(err => {
console.log(err);
});
for (i = 0; i < j; i++) {
asycronouseProcess(function (i) {
alert(i);
}.bind(null, i));
}
for (i = 0; i < j; i++) {
let k = i;
asycronouseProcess(function() {
alert(k);
});
}
for (i = 0; i < j; i++) {
asycronouseProcess(function(i) {
return function () {
alert(i)
}
}(i));
}
var i;
var j = 10;
for (i = 0; i < j; i++) {
await asycronouseProcess();
alert(i);
}
function asyncProcess() {
return new Promise((resolve, reject) => {
asycronouseProcess(()=>{
resolve();
})
})
}