繁体   English   中英

如何从存根 function 获取返回值?

[英]How to get return value from stub function?

使用 grpc,我创建了一个存根“客户端”。 他有一个'auth'方法。 我这样叫

client.auth({uuid:cookies.uuid}, function(err, r){} );

参数中的function会被异步调用,但是我需要同步获取它的值。 如何才能做到这一点?

将异步方法转换为同步方法是不可能的。 您可以使用async/await和 Promise 来“模拟”它,而无需任何外部 package。

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将在以后解决(AKA 异步)。 使用await关键字,您可以告诉 JavaScript 在继续执行之前等待Promise解决,模拟同步代码也是如此,虽然不是真正同步的。

如果你不习惯async/await ,解释起来有点长,所以最好找个教程。

那是一个异步操作。 你不能让它同步完成。 您可以使用grpc-promisegrpc-caller 之类的库来获取 promise,然后使用await能够以与同步代码类似的风格进行编码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM