我有一个连接到远程 API 的库:
class Client(access_token) {
void put(key, value, callback);
void get(key, callback);
}
我想设置一个 Node.js REPL 以便轻松尝试:
var repl = require('repl');
var r = repl.start('> ');
r.context.client = new Client(...);
问题是异步 API 对于 REPL 来说并不方便。我更喜欢一种同步的,它通过返回值产生结果并用异常发出错误信号。像这样的东西:
class ReplClient(access_token) {
void put(key, value); // throws NetworkError
string get(key); // throws NetworkError
}
有没有办法使用Client
实现ReplClient
?我希望避免标准 Node.js 包以外的任何依赖项。
最佳答案
您可以利用wait-for-stuff的魔力同步等待东西.
根据您的示例规范:
const wait = require('wait-for-stuff')
class ReplClient {
constructor(access_token) {
this.client = new Client(access_token)
}
put(key, value) {
return checkErr(wait.for.promise(this.client.put(key, value)))
}
get(key) {
return checkErr(wait.for.promise(this.client.get(key)))
}
}
const checkErr = (maybeErr) => {
if (maybeErr instanceof Error) {
throw maybeErr
} else {
return maybeErr
}
}
关于node.js - 使 Node.js REPL 的异步函数同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30476726/