跳到主内容
快讯直播
AI智模界
AI 词典

同步、异步与回调:为什么有的接口要等,有的只给你一个任务号

一句话定义:同步(synchronous)调用指“发出请求后原地等结果,拿到才继续往下走”;异步(asynchronous)调用指“发出请求后立刻拿回一个受理凭证(通常是一个任务号 task id),结果晚点再取”;回调(callback)指“留下联系方式,让对方在结果出来时反过来通知你”。

打个比方:去快餐店点餐。同步就是你站在柜台前盯着后厨,出餐了才走开,简单直接,但这段时间什么也干不了。异步就是拿个号牌回座位,结果通过两种方式回到你手里:一是每隔两分钟去问一句“我的好了吗”,这叫轮询(polling);二是把手机号留给店员,好了打给你,这叫回调。回调的关键在“反向”:不是你调用它,而是你先把一段代码或一个网址交给对方,对方在合适时机反过来调用你;Web 服务里这种回调常叫 webhook。

为什么不能都用同步:网络请求有超时限制,一条 HTTP 连接不适合挂着几分钟不动。而大模型推理、视频转码、批量语音转写这类任务动辄几十秒到几分钟,如果同步调用一直等待,会占用连接和线程,用户一关页面还可能前功尽弃。于是接口常被设计成“提交任务 → 返回 task id → 再查状态或等通知”。

方式调用方是否阻塞结果怎么拿适合的任务时长主要代价
同步是,原地等直接放在响应里返回秒级以内容易超时、连接被占
异步轮询否拿 task id 定时查询几十秒到几分钟反复查询、结果有延迟
回调 / webhook否对方推送到你给的地址几分钟到几小时需要公网可达地址、要处理重复投递

几个容易混的邻居:异步不等于并行,它只是“不等待”,底层可能是单线程的事件循环在轮转;回调也不等于异步,很多语言里的遍历函数就是同步执行回调;流式输出(streaming)又是另一回事,它是边算边推,适合聊天框里的打字机效果。

实际意义:做接口的人,先判断任务时长再决定形态;长任务要配幂等键,回调要验签、要能容忍重复投递(同一个结果可能被通知多次),轮询要加退避,别一秒一次地反复查询。用产品的人,看到“任务已提交,请稍后查看”不是卡住了,而是异步在正常工作;反过来,页面转圈很久,往往是某个同步接口在处理很耗时的请求。至于具体某个接口属于哪种、超时多久、回调重试几次,各家不一样,以官方文档为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。