gpt4 book ai didi

javascript - meteor 服务器中的异步函数

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

我正在使用vpulim:node-soap让 SOAP 服务器运行。

我的 meteor 服务器启动包含以下各种其他代码:

  authRequestOperation: function(args,cb,headers,req) {
console.log(args);
var authResponceObject = {};
var futureAuthResponse = new Future();
Fiber(function(){
if(collectorUsers.findOne({username: args.username})){
console.log("Found User");
authResponceObject = {
username: args.username,
nonce: Random.id()
};
console.log("authResponceObject is: " + JSON.stringify(authResponceObject,null,4));
console.log("futureAuthResponse returning...");
futureAuthResponse.return(authResponceObject);
}
// console.log("futureAuthResponse waiting...");
// return futureAuthResponse.wait();


}).run();
console.log("authResponceObject after fiber is: " + JSON.stringify(authResponceObject,null,4));
return authResponceObject;
},

我想做的是:

  1. 我从客户端收到一个用户对象。
  2. 我检查用户是否存在于 mongodb 中
  3. 如果用户在场,则准备响应对象
  4. 使用响应对象响应客户端。

我有1.工作。然而,由于是异步调用,2、3、4的顺序被打乱了。

现在发生的事情是:

  1. 接收客户端对象
  2. 返回响应对象(为空)
  3. 检查蒙戈
  4. 准备响应对象。

我没有使用 Meteor.methods 来实现上述目的。我如何以正确的方式进行这项工作?我尝试过使用 wrapAsync Fiber/future 但遇到了死胡同。

最佳答案

我相信Meteor.bindEnvironment可以解决你的问题,试试这个代码:

{
// ...
authRequestOperation: Meteor.bindEnvironment(function(args, cb, headers, req) {
console.log(args);
var authResponceObject = {};

if (collectorUsers.findOne({username: args.username})) {
console.log("Found User");
authResponceObject = {
username: args.username,
nonce: Random.id()
};
console.log("authResponceObject is: " + JSON.stringify(authResponceObject, null, 4));
}


return authResponceObject;
}),
// ...
}

关于javascript - meteor 服务器中的异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40867343/

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