http-client如何解决”回调地狱“的问题

0

目前是希望采用webman去实现各个微服务,各服务之前的通信采用HTTP的方式,现在遇到的困惑是,由于业务中一个api内可能会有多个http请求,而这些请求之间也有逻辑关系,实现的时候回调套回调会有好几层,如何解决这个问题呢?如果是node的话,可以用协程或者async await把异步转成同步的编码方式...


比如说一个请求中需要包含ABCD四个请求,如果用http-client的话会是这样:


function test(request $request){
$http->get('A', function($respa) {
$http->get('B', function($respb) {
$http->get('C', function($respc) {
$http->get('D', function($respd) {
json([$respa, $respb, $respc, $respd])
})
})
})
})
}

这样的话 如果再handle一下每层回调的请求错误逻辑,那就太复杂了


如果用CURL的话,又怕阻塞会导致性能降低

已邀请:

xiuwang

赞同来自: forgaoqiang

我觉得为了极限性能写异步代码得不偿失,代码可读性差,易出错,不好维护。如果要极限性能,直接用go吧。


我们用webman都是同步阻塞的写法,也就是传统项目写法,该用curl就用curl。如果外部调用多就多开点进程,性能也非常好。虽然没用异步,但是压测仍然比传统框架写的接口高出几倍,甚至是十几倍。最关键的是业务代码可以在webman和传统框架里复用,开发成本和维护成本大大降低。

张先生

赞同来自:

Promise或许能解救你

要回复问题请先登录注册