gpt4 book ai didi

ajax - 在结束 AJAX 请求之前等待 node.js 回调完成

转载 作者:太空宇宙 更新时间:2023-11-04 01:09:52 26 4
gpt4 key购买 nike

我在前面使用 jQuery 使用 $.post() 发出 AJAX post 请求。我还传递了一个成功函数,它将对返回的数据执行某些操作。在我的node.js服务器上,我使用express来处理请求,post请求调用另一个传递回调的函数,该回调在回调中执行res.send()。如何让请求在回调完成之前才完成?

我的客户端代码是:

$.post("/newgroup/", {name: newgroupname}, function(data) {
console.log(data); // Returns undefined because requests ends before res.send
});

我的服务器端代码是:

app.post('/newgroup/', function(req, res){
insertDocument({name:req.body.name, photos:[]}, db.groups, function(doc){
res.send(doc);
});
});

insertDocument函数是:

function insertDocument(doc, targetCollection, callback) {
var cursor = targetCollection.find( {}, {_id: 1}).sort({_id: -1}).limit(1);
cursor.toArray(function(err, docs){
if (docs == false){
var seq = 1;
}
else {
var seq = docs[0]._id + 1;
}
doc._id = seq;

targetCollection.insert(doc);
callback(doc);
});
}

最佳答案

如果您向我们展示的代码是真实的代码,那么唯一的可能性是您返回的 doc 实际上是 未定义。在触发 res.send() 之前,客户端上的回调不会触发。

你确定insertDocument中的回调和你想象的一模一样吗?回调通常采用 function(err,doc) 的形式,即尝试以下操作:

app.post('/newgroup/', function(req, res){
insertDocument({name:req.body.name, photos:[]}, db.groups, function(err, doc){
res.send(doc);
});
});

关于ajax - 在结束 AJAX 请求之前等待 node.js 回调完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18925103/

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