Javascript 如何在异步forEach循环中添加延迟
我有一个交易脚本,它从“coin”对象获取值,该对象由一个API调用填充,然后在Javascript 如何在异步forEach循环中添加延迟,javascript,loops,foreach,async-await,settimeout,Javascript,Loops,Foreach,Async Await,Settimeout,我有一个交易脚本,它从“coin”对象获取值,该对象由一个API调用填充,然后在async forEach循环中迭代,然后向服务器发送交易订单 服务器在每个请求之间至少需要100毫秒。我使用了setTimeout,但我可以看到结果一下子传到控制台,所以服务器在一段时间后会被禁止 我应该如何设计延迟? js Object.keys(coin).forEach(async function(key) { const coinz = coin[key]; let line1 = sellcoin
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));
});
使用
for
循环而不是forEach
并将整个内容包装到一个异步函数中:
const sleep=ms=>新承诺(r=>setTimeout(r,ms))
const tradeFn=async()=>{
试一试{
为了(让我投入硬币){
等待睡眠(200);
const coinz=硬币[i];
等待销售cointrade(coinz/*etc*/);
//等
}
}捕获(e){
//处理拒绝
}
}
使用for
循环,而不是forEach
,并将所有内容包装成一个异步函数:
const sleep=ms=>新承诺(r=>setTimeout(r,ms))
const tradeFn=async()=>{
试一试{
为了(让我投入硬币){
等待睡眠(200);
const coinz=硬币[i];
等待销售cointrade(coinz/*etc*/);
//等
}
}捕获(e){
//处理拒绝
}
}
这是否回答了您的问题?您可以使用setTimeout函数。另一种解决方案是使用rxjs库中的流。我需要异步函数中的解决方案。为了使其正常工作,forEach
回调必须由forEach的内部工作来等待。很肯定不是这样的。您必须以其他方式添加等待部分。这是否回答了您的问题?您可以使用setTimeout函数。另一种解决方案是使用rxjs库中的流。我需要异步函数中的解决方案。为了使其正常工作,forEach
回调必须由forEach的内部工作来等待。很肯定不是这样的。您必须以其他方式添加等待部分。是否必须使用for循环,forEach方法对于复杂的coin对象更简单是的,但由于某些原因不能异步工作。此基本for
循环或for(让我投入硬币)
解决方案将起作用。或者,您可以使用for…wait循环,但它需要自定义迭代器函数。我必须使用for循环吗,forEach方法对于复杂的coin对象更简单是的,但由于某些原因不能异步工作。此基本for
循环或for(让我投入硬币)
解决方案将起作用。或者,您可以使用for…wait循环,但它需要自定义迭代器函数。