gpt4 book ai didi

javascript - Meteor:多次调用异步服务器方法

转载 作者:行者123 更新时间:2023-12-03 08:52:56 25 4
gpt4 key购买 nike

我需要使用不同的参数调用 3 次相同的服务器方法:

  // client code
var types = ['type1', 'type2', 'type3'];
for (var i = 0; i < types.length; i++) {
console.log('client calling', types[i])
Meteor.call('myMethod', types[i], function (error, result) {
console.log('client got', types[i])
Session.set(types[i], result.data);
});
}

// server code
var Future = Npm.require("fibers/future");

Meteor.methods({
myMethod: function (type) {
var params = {
type: type
};

var future = new Future();
console.log('server calling', type)
HTTP.call("GET", Meteor.App.HOST + "/myApi",
{params: params}, function (error, results) {
if (error) {
future.throw(error);
} else {
console.log('server got', type)
future.return(results);
}
});

return future.wait();
}
});

服务器 HTTP 调用最多需要 10 秒。查看日志我看到:

// client
client calling type1
client calling type2
client calling type3
client got type1
client got type2
client got type3

// server
server calling type1
server got type1
server calling type2
server got type2
server calling type3
server got type3

客户端日志正常。我期望服务器上有相同的行为,但似乎一个客户端发出的调用是按顺序执行的。如果我启动两个客户端,我有以下服务器日志:

// server
server calling type1
server calling type1
server got type1
server calling type2
server got type1
server calling type2
server got type2
server calling type3
server got type2
server calling type3
server got type3
server got type3

这是一个限制还是我的代码不正确?

最佳答案

this.unblock() 在方法调用中可以解决这个问题,它不会阻塞 Meteor 方法,当你进行一些 API 调用、发送电子邮件并且不必等待时,这很好。让它完成

Call inside a method invocation. Allow subsequent method from this client to begin running in a new fiber. http://docs.meteor.com/#/full/method_unblock

关于javascript - Meteor:多次调用异步服务器方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32619445/

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