【发布时间】:2017-10-31 23:09:00
【问题描述】:
编辑:这是一个电子项目,在用户系统上启动了本地服务器。因此,如果多个用户尝试同时访问会发生什么,任何担忧都可以忽略!
我的客户端代码正在生成一个 JavaScript 对象数组,我称之为 packets。可能有无限的 packets,尽管 1 到 10 之间是最常见的用例。
我需要对后端路由进行 API 调用,每个 packet 一个,将 packet 作为参数传递给每个调用。
但是,后端对每个数据包进行一些繁重的计算工作,以至于尝试一次处理超过 2-3 个数据包会使服务器崩溃。
是否可以同步解析 Promise,这样第二个 Promise 仅在第一个解析时触发,第三个在第二个解析后触发,以此类推? p>
我的理解是 Promise.all() 同时进行所有调用,这对我没有帮助。
(我也知道这是一种反模式,但是对于我的特定要求,我不确定还能做什么)
我知道这纯粹是抽象的,但任何想法都将不胜感激!!!
【问题讨论】:
-
是的,“顺序”会是更好的语义。我只是说 Promise 1 需要在 Promise 2 开始之前完成,Promise 2 需要在 Promise 3 开始之前完成,依此类推,直到 Promise N。
-
My client code is generating an array of JavaScript objects- 让我问这个。您是否正在创建数组,一旦生成了数组,您就可以进行 API 调用吗?或者更多的情况是这些对象是动态创建的,并且您希望确保一次只调用一个 API - 即下面的“队列”答案将是理想的 -
听起来你只是在描述chaining。使用composition。
-
一种选择是将其视为Promise-throttling problem,其中
n = 1,尽管听起来您也可以使用n = 2或n = 3。
标签: javascript asynchronous promise