const mongoClient = new MongoClient("mongodb://localhost:27017/");
await mongoClient.connect();
const mongoCollection = mongoClient.db(DB).collection(COLLECTION);
let coins = []
//получение данных
coins.push(coin)
async function addBD(){
console.log(coins.length)
coins = removeDuplicates(coins)
console.log("Без дубликатов ", coins.length)
for (const coin of coins){
await mongoCollection.replaceOne({ exchange: coin.exchange,
symbol: coin.symbol }, coin, {upsert: true});
}
coins = []
console.log(coins.length)
}
setInterval(()=>{
addBD()
}, 5000)
如何让函数在循环完成后运行?不使用间隔。
async function addBD(){
console.log(coins.length)
coins = removeDuplicates(coins)
console.log("Без дубликатов ", coins.length)
for (const coin of coins){
await mongoCollection.replaceOne({ exchange: coin.exchange, symbol: coin.symbol }, coin, {upsert: true});
}
coins = []
console.log(coins.length)
addBD()
}
我这样做了,但出现错误“超出最大调用堆栈大小”
您可以通过以下方式实现函数的循环启动:
创建一个包装函数,它将调用所需的函数并在完成后调用自身。如果您需要在调用之间进行延迟,还有一个示例
或者通过 while 循环,也在异步函数中,以便您可以等待结果:
用 addBD 函数代替 sleep 函数