JavaScript面试题:用带随机延迟的异步函数顺序打印a、b、c
按顺序执行异步printString的实现方案
给定的异步函数如下:
const printString = (string, callback) => { setTimeout(() => { console.log(string); callback(); }, Math.random() * 1000); };
要实现按a→b→c的顺序打印,核心思路是让后一个printString调用在前一个的回调函数中执行,确保前一个异步操作完成后才启动下一个。具体实现代码如下:
const printInOrder = () => { printString('a', () => { printString('b', () => { printString('c', () => { // 可选:所有打印完成后的收尾操作 console.log('All characters printed'); }); }); }); }; // 启动顺序打印 printInOrder();
原理说明
- 每个
printString的回调函数负责触发下一个字符的打印逻辑 - 由于
setTimeout的内部逻辑是先打印字符再执行传入的callback,因此只有当前字符打印完成后,才会触发下一次printString调用 - 随机延迟只会影响单个字符的等待时长,但不会打乱整体顺序,因为后续操作完全依赖前一个操作的回调触发
内容的提问来源于stack exchange,提问作者Abhishek Satyavolu
相关产品推荐
相关产品推荐

