【发布时间】:2020-04-25 00:00:08
【问题描述】:
我有一个交易脚本,它从“coin”对象中获取值,该对象由 API 调用填充,然后在 async forEach 循环内进行迭代,然后将交易订单发送到服务器。
服务器要求每个请求之间至少有 100 毫秒。我承诺使用setTimeout,但我可以看到结果立即出现在控制台上,因此服务器会在一段时间后被禁止。
我应该如何设计延迟?js
Object.keys(coin).forEach(async function(key) {
const coinz = coin[key];
let line1 = sellcoinCalc("sell", coinz.usdPair, coinz.usdOrder)
let line2 = buycoinCalc("buy", coinz.usdtPair, line1)
let result = line2-line1
if (result > 0){
console.log(result)
}
if (result >= profit){
await sellcoinTrade("sell", coinz.usdPair, coinz.usdOrder)
await buycoinTrade("buy", coinz.usdtPair, line1)
}
await new Promise(r => setTimeout(r, 200));
});
【问题讨论】:
-
这能回答你的问题吗? How do I add a delay in a JavaScript loop?
-
你可以使用 setTimeout 函数
-
另一种解决方案是使用 rxjs 库中的流。
-
我需要异步函数中的解决方案
-
为了使其工作,
forEach回调必须是await由 forEach 的内部工作原理。很确定不是这样的。您将不得不以其他方式添加等待部分。
标签: javascript loops foreach async-await settimeout