如何调用外部API以使它们保持异步?
故障是我需要拨打几百万个电话,所以我当时要发送其中的10个,一旦其中任何一个回来,再发一个,并继续这样做,直到所有的他们是完整的。
所以它有点像同时运行10个线程。
答案 0 :(得分:0)
如果您使用request.js,您还可以使用限制未完成请求的池配置选项
在request.js
中pool:{ maxSockets:10 }
https://github.com/request/request
agent - http(s)。使用的代理实例 agentClass - 或者指定代理的类名 agentOptions - 并传递其选项。注意:对于HTTPS,请参阅用于TLS / SSL选项的API文档和上述文档。 forever - 设置为true以使用forever-agent注意:在节点0.12+中默认为http(s).Agent({keepAlive:true}) pool - 描述要用于请求的代理的对象。如果省略此选项,请求将使用全局代理(只要您的选项允许)。否则,请求将在池中搜索您的自定义代理。如果未找到自定义代理,则将创建新代理并将其添加到池中。注意:仅在未指定代理选项时才使用池。 还可以在池对象上提供maxSockets属性,以设置创建的所有代理的最大套接字数(例如:pool:{maxSockets:Infinity})。 请注意,如果要在循环中发送多个请求并创建多个新池对象,则maxSockets将无法按预期工作。要解决此问题,请将request.defaults与池选项一起使用,或者使用循环外部的maxSockets属性创建池对象。 timeout - 整数,包含在中止请求之前等待服务器发送响应头(并启动响应主体)的毫秒数。请注意,如果无法建立基础TCP连接,则操作系统范围的TCP连接超时将取代超时选项(Linux中的默认值可以是20-120秒)。