gpt4 book ai didi

javascript - 如何在异步 forEach 循环中添加延迟

转载 作者:行者123 更新时间:2023-11-28 03:16:11 29 4
gpt4 key购买 nike

我有一个交易脚本,它从“coin”对象获取值,该对象由 API 调用填充,然后在 async forEach 循环内进行迭代,然后将交易订单发送到服务器。

服务器要求每个请求之间至少有 100 毫秒的间隔。我使用了带有promise的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));
});

最佳答案

使用 for 循环而不是 forEach 并将整个内容包装到异步函数中:

const sleep = ms => new Promise(r => setTimeout(r, ms))

const tradeFn = async () => {
try {
for (let i in coin) {
await sleep(200);
const coinz = coin[i];
await sellcoinTrade(coinz /* etc */);
// etc
}
} catch(e) {
// handle rejections
}
}

关于javascript - 如何在异步 forEach 循环中添加延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59629098/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com