我期望的输出是:A,B,C。但它没有达到预期效果。假设函数 handleClick(element) 不能改变,我该如何更改其他函数以确保所有代码按顺序执行并按预期输出 A,B,C?
async function handleClick(element) {
setTimeout(function(){
console.log(`Click on Element_${element}`);
}
, Math.random(5)*1000);
}
async function clickLetter(letter) {
await handleClick(letter);
}
async function clickGroup(group) {
await handleClick(group);
}
const letters = ['A', 'B', 'C'];
function clickLetters(letters, fn) {
let index = 0;
return new Promise(function(resolve, reject) {
function next() {
if (index < letters.length) {
fn(letters[index++]).then(next, reject);
} else {
resolve();
}
}
next();
});
}
clickLetters(letters, clickLetter);
async
库,https://caolan.github.io/async/docs.html#eachSeries - XCSasync.eachSeries(letters, clickLetter)
这样使用吗? - XCSclickLetter
返回一个 Promise,它不接受节点风格的回调。 - Bergi