javascript - for循环javascript中的异步/等待。
问题描述
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,它仍然按顺序运行。我究竟做错了什么 ?. 请帮忙。我已经多次尝试过代码,但它仍然按顺序运行。请帮忙。
解决方案
请参阅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();
推荐阅读
- c++ - Clang AST 匹配器:如何匹配 lambda 捕获的变量?
- html - 在 HTML 文档中嵌入 SVG 过滤器
- keras - 如何重置 keras/tensorflow 2.0 中的所有图形和变量?
- javascript - 我想在加载文档后隐藏一些东西并显示另一个
- java - 如何将数据从 HTML 发送到数据库(通过 thymeleaf 更新引用的对象)?
- python - 从python中的列表中查找包的最大次要版本
- javascript - 如何使用 React Router 嵌套一些路由?我想保留一个标题组件
- javascript - 如果任何元素为真,如何迭代任何数组以返回值“真”
- r - 在同一工作表中提取多个数据文件
- android - 无法在 WorkManager 中未调用 Looper.prepare() 的线程内创建处理程序