使用 grpc,我创建了一个 stub “客户端”。 他有一个“auth”方法。 我就这样称呼
client.auth({uuid:cookies.uuid}, function(err, r){} );
参数中的函数将被异步调用,但我需要同步获取它的值。 如何做到这一点?
最佳答案
不可能将异步方法转换为同步方法。您可以使用 async/await
和 Promise 来“模拟”它,无需任何外部包。
function clientLogin() {
return new Promise((accept, reject) => {
client.auth({uuid:cookies.uuid}, (err, r){
if (err) {
reject(err);
} else {
accept(r);
}
});
});
}
// This code needs to run inside and async function
try {
let r = await clientLogin();
console.log(r);
} catch (e) {
console.error(e);
}
clientLogin()
返回一个 Promise
,该 promise 将在稍后解决(也称为异步)。使用 await
关键字,您可以告诉 JavaScript 在继续执行之前等待 Promise
解析,模拟同步代码也是如此,尽管并不是真正同步。
如果您不习惯async/await
,解释起来有点长,所以最好看一下教程。
关于javascript - 如何从 stub 函数获取返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62867638/