Node 怎么调用服务?
发布于 6 年前 作者 riskers 4267 次浏览 来自 问答

小弟现在在开发一个内部系统,是基于 Nodejs 的,因为本人后端经验不足,请求大家帮助。

需求是:现在调用一个接口,这个接口会调用一个 npm 模块,这个模块是一个异步的。

问题:

  1. 我怎么调用这个 npm 模块
  2. 并且在调用任务完成后知道已经完成

如果上述问题解决了,怎么如何保证同时调用调用这个服务不冲突呢。

希望大家不吝赐教。

12 回复

很多方案:

  1. callback
  2. promise
  3. co
  4. async/await

推荐 async/await

@htoooth 不是不知道这些异步方法,而是不清楚怎么调用服务

如果是http协议的接口 可以使用request或者node-fetch模块来调用

服务啥协议,http?RPC?每个协议调用方法不一样,如果服务响应时间太长的话你可以自己设置一个callback url,类似支付那种,不考虑的话异步方法楼上基本都说全了

@qiu363 是这样的,我需要在每一次请求中,调用一个 npm 包。这个包会分析请求中查询到的数据,产生一系列图片,还要上传到 CDN 上。这个过程大概会花1分钟左右,那么,我就想问,还是用 async / await 来做么。这样,Node 程序会不会卡死在这一步?

@riskers 如果你调用的包和你的代码都是异步的 用async/await来做,最多也只是卡死你当前任务,其他任务还是会继续接进来的

@riskers NODE程序不会卡死,不过你这个请求得等1分钟左右才能响应

首先你这个接口是一个node程序还是http的接口 node的脚本直接require不就行咯? 如果是另外的程序,http的话,那直接用http通讯模块访问及具体地址; 如果是另外的进程,启用子进程,然后进程通讯child_process.fork可以去了解下。

@qiu363 好的,谢谢

这种耗时比较长的任务,还是使用消息队列来完成更合适,例如 http://www.rabbitmq.com/ , 长时间等待响应不易监控和排查问题

@mengdu 是一个 Node 全局模块,执行一次要一分钟左右。你觉得怎么样比较好

回到顶部