为Node.js REPL创build一个同步的asynchronous函数

我有一个连接到远程API的库:

class Client(access_token) { void put(key, value, callback); void get(key, callback); } 

我想要设置一个Node.js REPL来简化testing:

 var repl = require('repl'); var r = repl.start('> '); r.context.client = new Client(...); 

问题是一个asynchronousAPI对于一个REPL来说是不方便的。 我更喜欢一个同步的,通过返回值产生结果,并发出一个exception的错误。 就像是:

 class ReplClient(access_token) { void put(key, value); // throws NetworkError string get(key); // throws NetworkError } 

有没有一种方法来实现使用Client ReplClient ? 我宁愿避免除标准N​​ode.js包以外的任何依赖项。

你可以用等待东西的魔法同步等待东西 。

根据您的示例规范:

 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 } }