gpt4 book ai didi

javascript - 从 mongodb 回调将值设置为外部变量

转载 作者:行者123 更新时间:2023-12-02 19:01:31 25 4
gpt4 key购买 nike

当我必须将 mongodb 查找回调函数中的值设置为外部变量时,我遇到了一个奇怪的问题。例如:

    p += '<tr style="width: 165px!important;">';
photos.forEach(function(photo) {
EventPhoto.findOne({ _photo: photo._id }, function(err, doc) {
if (doc.main) {
p += '<td class="center-text"><a href="#" class="main-photo-on" onclick="javascript:changeMainPhoto("' + photo._id + '");">destaque</a></td>';
} else {
p += '<td class="center-text"><a href="#" class="main-photo-off" onclick="javascript:changeMainPhoto("' + photo._id + '");">destaque</a></td>';
}
});
});
p += '</tr>';

变量p每张照片都是增量的,问题是当 EventPhoto.find(...) 结束并且该值未签名时,会丢失所有添加的内容(我检查过)。不幸的是,我无法在这个回调函数中开发其余的代码,那么即使没有“ super ”运算符或类似的东西,如何分配这个值呢?

谢谢!

最佳答案

这不起作用,因为您正在启动异步请求,并且您不知道返回值何时到达。相反,您应该旨在按顺序执行每个查找,一旦到达末尾,就继续执行需要执行的工作。我相信就您的情况而言,这或多或少是您正在寻求的方法。

var p = '<tr style="width: 165px!important;">';
var i = -1;
var next = function() {
i++;
if (i < photos.length) {
var photo = photos[i];
EventPhoto.findOne({ _photo: photo._id }, function(err, doc) {
if (doc.main) {
p += '<td class="center-text"><a href="#" class="main-photo-on" onclick="javascript:changeMainPhoto("' + photo._id + '");">destaque</a></td>';
} else {
p += '<td class="center-text"><a href="#" class="main-photo-off" onclick="javascript:changeMainPhoto("' + photo._id + '");">destaque</a></td>';
}
next();
});
}
else {
p += '</tr>';
// TODO: Do remaining work.
}
}
next();

关于javascript - 从 mongodb 回调将值设置为外部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14755469/

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