一个前端交流群的一道面试题
只修改start方法,实现id 从0到4 依次输出
1 | /* |
1 | function start(id) { // 只修改start方法,实现id ** 从0到4 ** 依次输出 |
因为for循环会立即触发,所以只修改start方法有些难度!!!
如果不考虑代码修改范围,可以实现for of
等方法。可参考async 并发执行和继发执行1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20(async ()=> {
for(let i = 0; i < 5; i++) {
await execute(i).catch(console.log)
}
})()
function sleep() {
const dur = Math.floor(Math.random() * 500);
return new Promise((res, rej) => {
setTimeout(() => {
res();
}, dur)
})
}
function execute(id) {
return sleep().then(() => {
console.log('id:' + id);
});
}
投机取巧1
1 | function start(id) { |
投机取巧2
1 | function start(id) { |
我的答案1
1 | async function start(i, isDg) { |
以下方法都会污染this
我的答案2
1 | function start(id) { |
我的答案3
1 | function start(id) { |
我的答案4
1 | async function start(id) { |