You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 08:47:03