gpt4 book ai didi

javascript - 在嵌套 Mongoose 函数完成之前完成循环

转载 作者:行者123 更新时间:2023-11-30 15:34:04 25 4
gpt4 key购买 nike

总而言之,我正在编写一个 post 函数,其中包含一个 for 循环和三个嵌套的 mongoose 函数(findOne、findById 和 create)。但是,在进入下一个“i”之前,似乎功能还没有完成。这段代码的 console.log 永远不会等于 5 的事实证明了这一点。我做了很多研究并理解问题是这些 Mongoose 函数是异步的,但我还没有遇到人们遇到的问题具有如下三个嵌套函数。有没有什么方法可以让函数在进入循环之前完成?

谢谢!

为简单起见,我将 i < 5,尽管这在我的代码中由一个变量表示。此外,我们假设价格大于 sellYesPricesMin。

var quantity = 0;
if(price >= sellYesPricesMin){
for (i = 0; i < 5; i ++){
if(price >= sellYesPricesMin && sellYesPricesMin>0){
Order.findOne({"yes_or_no":"NO", "buy_or_sell":"BUY","event.id":req.params.id},function(err, foundOrder){
if(err){
console.log(err);
} else {
User.findById(foundOrder.author.id, function(err, foundUser){
if(err){
console.log( err);
} else {
Share.create({}, function (err, newShare) {
if (err){
console.log(err);
quantity = quantity + 1;
sharesCreated++;
campground.shares.push(newShare);
campground.save();
foundUser.save();
}
});
}
});
}
});
} else {
campground.buyYesPrices.push(parseFloat(Math.round(price * 100) / 100).toFixed(2));
req.user.save();
campground.save();
}
req.user.save();
campground.save();
}
console.log("QUANTITY: " + quantity);
} else {
// BLAH BLAH BLAH
}

最佳答案

根据上面的场景,我的理解是你想在一个状态下访问函数外部的某个变量,就好像这些函数是同步执行的一样。

您可以将这些变量绑定(bind)到这些函数,这些执行将按照您希望它们执行的方式进行。

我正在编写一个小代码,可以帮助您理解这个概念。

for (var i = 0; i < 10; i++) {

asynccall("Hello", function (others, err, data) {
console.log("Others is same as i in synchrnous call " + others);
}.bind(this, i));
}

关于javascript - 在嵌套 Mongoose 函数完成之前完成循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41843321/

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