total_arr={}
total=0
data={"a":1,"b":2,"c":3}
const Binance = require('node-binance-api');
const binance = new Binance().options({
APIKEY: '<key>',
APISECRET: '<secret>'
});
async function trigger(){
async function trig() {
for (keys in data){
var x= await binance.futuresMarketBuy( 'BNBUSDT', data[keys] )
var x2= await binance.futuresMarketBuy( 'BTCUSDT', x )
total_arr["buy"+keys]=x+x2;
}
}
async function trig2() {
var y =await binance.futuresMarketSell( 'BNBUSDT', data[keys] )
var y2= await binance.futuresMarketSell( 'BTCUSDT', y )
total_arr["sell"+keys]=y;
}
async function trigger(){
for (keys in data){
await trig(); /*I want to run trig() and trig2() asynchronously */
await trig2();
}
for (iterat in data) await {
total=total+data[iterat] /*AFTER trig() and trig2() have COMPLETELY run in for loop, I want
to add them up this way*/
}
console.log(total)
}
}
trigger(); 我想异步运行trig()和trig2(),但尽管使用了async/await,它仍然是按顺序运行的。我做错了什么?请帮帮忙。我对代码进行了多次实验,但它仍然是按顺序运行的。请帮帮忙。
发布于 2020-10-06 20:21:59
参见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all。
await Promise.all([trig(), trig2()])很难确定你想要做什么,但我认为这更接近:
const Binance = require('node-binance-api');
const total_arr = {};
let total = 0;
const data = {"a" : 1, "b" : 2, "c" : 3};
const binance =
new Binance().options({APIKEY : '<key>', APISECRET : '<secret>'});
async function buy() {
for (const key in data) {
var x = await binance.futuresMarketBuy('BNBUSDT', data[key]);
var x2 = await binance.futuresMarketBuy('BTCUSDT', x);
total_arr["buy" + key] = x + x2;
}
}
async function sell() {
for (const key in data) {
var y = await binance.futuresMarketSell('BNBUSDT', data[key]);
var y2 = await binance.futuresMarketSell('BTCUSDT', y);
total_arr["sell" + key] = y;
}
}
async function main() {
await Promise.all([ buy(), sell() ]);
for (const key in data) {
total = total + data[key];
}
console.log(total);
}
main();https://stackoverflow.com/questions/64225622
复制相似问题