gprc 客户端异步响应 NodeJS



我正在尝试在函数中调用一个简单的grpc请求,但我不知道如何等待响应并将其传递到grpc调用之外。

它应该是这样的:

Client: (parent, args, context, info) =>{
client.Get({thing, objects, properties}, function(err, response) {
//how to return the response outside?
});
//await for the response function.
};

是否可以在客户端外部以某种方式返回响应。获取函数? 有人有什么建议吗? 谢谢你的建议!

您有两种方法:

  1. 将 gRPC 的方法从错误第一次回调包装为自己的承诺。
new Promise((resolve, reject) => client.Get({thing, objects, properties}, function(err, response) {
if(err) {
return reject(err)
}
resolve(response)        
}))
  1. 使用 grpc-promise 来承诺 gRPC 客户端的方法。
const grpc_promise = require('grpc-promise');;
grpc_promise.promisifyAll(client);

然后,您可以将这个承诺的 gRPC 客户端传递给 GraphQL 上下文。(根据函数签名猜测您正在使用 GraphQL(。

然后,您可以在 GraphQL 解析器中返回一个承诺。

Client: (parent, args, context, info) =>{
return context.client.Get({thing, objects, properties})
};

最新更新