我有一个连接到远程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
}
有没有办法使用ReplClient
来实施Client
?我宁愿避免除标准Node.js包之外的任何依赖。
答案 0 :(得分:0)
您可以使用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
}
}