我正在使用一个名为“ node-binance-api”的NPM软件包,它确实是不错的lib,但是它使用许多常规的callback()作为代码中的参数。
我的框架是基于Async / Await的,它是可能的或可实现的,因此默认情况下无法在此代码中使用,因为callback()是3中的第二个参数。
这是我使用库存的Promise使其可用于我的Async / Await代码库的实际解决方案。
promise_get_candlestick(symbol, interval, options = null) {
return new Promise((resolve, reject) => {
binance.candlesticks(
symbol,
interval,
(error, ticks) => {
if (error) {
reject(error);
} else {
resolve(ticks);
}
},
options
);
});
}
但是我知道这不是针对这种情况的最佳解决方案,如果没有任何第三方包,有没有更好的方法来包装它?
答案 0 :(得分:2)
该库似乎使用经典的回调模式,其中第一个参数是错误,第二个参数是成功的结果。
有一个内置的node.js实用程序来进行转换。
const { promisify } = require('util');
const promise_get_candlestick = promisify(
binance.candlesticks.bind(binance)
);
答案 1 :(得分:0)
我实际上没有发现任何问题。它可以让你做
await promise_get_candlestick(symbol, interval, options)
,我想这就是您想要的。
答案 2 :(得分:0)
也许是这样的:
const promise_get_candlestick = promisify(
(symbol, interval, options = null, callback) =>
binance.candlesticks(symbol, interval, callback, options)
);
答案 3 :(得分:0)
const foo = async (symbol, interval, options) => {
try{
let candles = await binance.candlesticks(symbol, interval, false, options);
candles = bar(candles);
}
catch(err){
console.log(err);
}
}