javascript - 如何从 stub 函数获取返回值?

标签 javascript node.js grpc

使用 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/

相关文章:

javascript - 在列中显示嵌套的 HTML ul 列表

Javascript 通过引用或值传递变量

javascript - 即使 DOM 中没有匹配的子元素,jQuery.find() 也会返回一个对象

javascript - 我怎样才能确保这个循环在node.js中按预期运行

android - DialogFlow Android SDK需要grpc-okhttp,但添加它会导致Socket IO CLient崩溃

javascript - 如何在 asp.net c# 中上传之前预览多个缩略图图像

node.js - 每个用户在哪里存储 SHA256 key 对

node.js - Meteor 0.8.1.3,CPU 使用率 100% 问题

google-maps - 我应该将新的还是旧的 Context 对象发送到我自己的 gRPC 服务器内的第 3 方 gRPC API?

asp.net-core - 如何使用bloomRPC 调用.NET Core 3.0 gRPC 服务器应用程序?