我正试图通过kraken-node api自动收报机数据。
我尝试了以下方法:
import KrakenClient from "kraken-api";
const knex = require('knex')(require('../knexfile'))
const kraken = new KrakenClient();
//*********************
//ASYNCH AWAIT EXAMPLE*
//*********************
const tickerAsynch = async function() {
// Get Ticker Info
return kraken.api('Ticker', { pair: 'XXBTZUSD' });
};
tickerAsynch().then(data => console.log(data)).catch(err => console.log(err))
//*****************
//CALLBACK EXAMPLE*
//*****************
// Get Ticker Info
const tickerCallback = function() {
kraken.api('Ticker', { "pair": 'XXBTZUSD' }, function(error, data) {
if (error) {
console.log(error);
}
else {
console.log(data.result);
}
})
};
console.log("Callback: " + tickerCallback())
ASYNCH AWAIT EXAMPLE
只是给我回复http请求:
回调:未定义请求{domain:null,_events:{error: [功能:界限], 完成:[功能:界限], pipe:[Function]},_ eventscount:3,_maxListeners:undefined,method:' POST',headers:{' User-Agent':' Kraken Javascript API客户端', 主持人:' api.kraken.com', '内容类型':' application / x-www-form-urlencoded', ' content-length':13},超时:5000,回调:[功能],可读:true,可写:true,explicitMethod:true,_qs:
请求参数 { 要求:[通告], lib:{formats:[Object],parse:[Function],stringify:[Function]}, useQuerystring:undefined, parseOptions:{}, stringifyOptions:{format:' RFC3986' },_ auth:Auth { 要求:[通告], hasAuth:false, sentAuth:false, bearerToken:null, user:null, pass:null},_ _ outh:OAuth {request:[Circular],params:null},_ multipart:Multipart { 要求:[通告], 边界:' 839beaf0-e37d-459b-a879-0d1e2b22aab4', chunked:false, body:null},_ redirect:Redirect { 要求:[通告], followRedirect:true, followRedirects:是的, followAllRedirects:false, followOriginalHttpMethod:false, allowRedirect:[功能], maxRedirects:10, 重定向:[], redirectsFollowed:0, removeRefererHeader:false},_ tunnel:Tunnel { 要求:[通告], proxyHeaderWhiteList: ['接受', '接收字符集&#39 ;, '编码接受&#39 ;, '接受语言&#39 ;, '接受范围,&#39 ;, '缓存控制&#39 ;, '内容编码&#39 ;, '内容语言&#39 ;, '内容位置&#39 ;, '内容-MD5&#39 ;, '内容范围&#39 ;, '内容类型&#39 ;, '连接&#39 ;, '日期&#39 ;, '期望值&#39 ;, ' MAX-转发&#39 ;, '编译&#39 ;, '引荐&#39 ;, ' TE&#39 ;, '用户代理&#39 ;, '通过' ] proxyHeaderExclusiveList:[]},setHeader:[Function],hasHeader:[Function],getHeader:[Function],removeHeader: [功能],localAddress:undefined,pool:{},dests:[],
__isRequestRequest:true,_callback:[Function],uri:Url { 协议:' https:', 斜线:真的, auth:null, 主持人:' api.kraken.com', 港口:443, 主机名:' api.kraken.com', hash:null, 搜索:null, 查询:null, 路径名:' / 0 / public / Ticker', 路径:' / 0 / public / Ticker', href:' https://api.kraken.com/0/public/Ticker' },proxy:null,tunnel:true,setHost:true,originalCookieHeader:undefined,
_disableCookies:true, jar:undefined,port:443,host:' api.kraken.com',body:' pair = XXBTZUSD',路径:' / 0 /公共/股票代码&#39 ;, httpModule:{Server:{[Function:Server] super :[Object]}, createServer:[功能:createServer], globalAgent: 代理人{ domain:null, _events:[Object], _eventsCount:1, _maxListeners:undefined, defaultPort:443, 协议:' https:', 选项:[对象], 要求: {}, 套接字:{}, freeSockets:{}, keepAliveMsecs:1000, keepAlive:false, maxSockets:无限, maxFreeSockets:256, maxCachedSessions:100, sessionCache:[Object]}, 代理人:{[功能:代理人]超级:[对象]}, 要求:[功能:要求], get:[Function:get]},agentClass:{[功能:代理] super_:{[Function:Agent] super_:[Object],defaultMaxSockets:Infinity}},agent:Agent { domain:null, _events:{free:[Function]}, _eventsCount:1, _maxListeners:undefined, defaultPort:443, 协议:' https:', 选项:{path:null}, 要求: {}, 套接字:{}, freeSockets:{}, keepAliveMsecs:1000, keepAlive:false, maxSockets:无限, maxFreeSockets:256, maxCachedSessions:100, _sessionCache:{map:{},list:[]}}}
然而,我通过回调示例得到了价格:
{ XXBTZUSD:
{ a: [ '4347.99900', '1', '1.000' ],
b: [ '4345.00000', '1', '1.000' ],
c: [ '4354.97000', '0.19747745' ],
v: [ '74.25674323', '10944.61634833' ],
p: [ '4391.05837', '4290.88239' ],
t: [ 314, 31776 ],
l: [ '4264.00000', '4082.99500' ],
h: [ '4468.00000', '4484.29000' ],
o: '4349.98700' } }
我的asynch-await
示例中有什么建议我做错了吗?
感谢您的回复!
答案 0 :(得分:0)
我认为kraken.api需要一个回调并且不会返回一个承诺,你总是可以使用下面的代码用一个承诺包装一个回调
function getKrakenPromise(){
return new Promise(function(resolve, reject){
kraken.api('Ticker', { "pair": 'XXBTZUSD' }, function(error, data) {
if (error) {
console.log(error);
reject(error)
}
else {
console.log(data.result);
resolve(data);
}
})
})
}
然后调用getKrakenPromise()而不是api