【发布时间】:2019-01-04 13:20:28
【问题描述】:
我还在学习异步。
我无法让我的异步代码工作。我有一个调用 API 的函数。
我在另一个函数上调用这个函数,以便以后能够操作数据并合并它们。
但我的代码总是向前运行,无需等待第一个函数的回答。
异步/承诺问题
var exchangeListing = {
"exchange":
[
{
"name": "Kraken",
"pair": ['XBTUSD','XETHUSD']
},{
"name": "Coinbase",
"pair": ["BTC-USD","ETH-USDC"]
},{
"name":"Bittrex",
"pair": ["BTC-USD","BTC-ETH"]
}
]
}
function BXgetPrice(currencies) {
var ret;
bittrex.getmarketsummary( { market : currencies}, function( data, err ) {
if(data!=null) {
ret = {
message: {
type: 'success',
data: {
last:data.result[0].Last,
volume:data.result[0].Volume,
date:data.result[0].TimeStamp,
}
}
};
return ret;
} else {
return;
}
});
return ret;
}
//Loop to get all data from all exchanges we need, and merge in a JSON, to send to HTML page
function exchangeListe(exchangeListing) {
var exchangeListing = JSON.stringify(exchangeListing);
var exchangeListing = JSON.parse(exchangeListing);
console.log(exchangeListing);
for(var i = 0, len = exchangeListing.exchange.length; i < len; i++) {
var a = exchangeListing.exchange[i].name;
for(var j=0, l=exchangeListing.exchange[i].pair.length; j<l; j++) {
if(a=="Kraken") {
//add code to manipulate data
} else if(a=="Bittrex") {
console.log("bittrex");
BXgetPrice(exchangeListing.exchange[i].pair[j], function(data,err){
console.log("hi"+data);
//add code to manipulate data
}) ;
} else if(a=="Coinbase") {
//add code to manipulate data
}
}
}
}
在 Exchange 列表中,我需要我的循环来完成所有可用的交换和所有配对,从 API 调用中获取数据,然后将它们合并。 目前,当启动 exchangeListe(exchangeListing) 时,我没有从函数 BXgetPrice 中获取数据。数据为空。 我尝试在两者上添加异步函数,并声明为 const + 使用 await,但没有任何帮助,我得到 Promise {}
感谢您的帮助
【问题讨论】:
标签: javascript node.js asynchronous