Files
grpc_picture/util/grpc-promisify.js
2026-01-09 11:21:29 +08:00

28 lines
809 B
JavaScript

function promisify (client) {
Object.keys(Object.getPrototypeOf(client)).forEach(functionName => {
if (functionName.startsWith('$')) {
return
}
const originalFunction = client[functionName]
client[functionName] = (request, callback) => {
if (callback && typeof callback === 'function') {
return originalFunction.call(client, request, (error, response) => {
callback(error, response)
})
}
return new Promise((resolve, reject) => {
originalFunction.call(client, request, (error, response) => {
if (error) {
reject(error)
} else {
resolve(response)
}
})
})
}
client[functionName].interceptors = originalFunction.interceptors
})
}
module.exports = promisify