【发布时间】:2018-01-12 22:29:51
【问题描述】:
我正在编写一个 Meteor 应用程序,它允许客户端通过单击按钮在服务器上执行终端命令。
我知道如何用一个命令来做到这一点:
//server
Meteor.methods({ exec : cmd => { ... } })
//client
Meteor.call('exec', cmd, (err, result) => {
console.log(result)
})
但是现在我正在尝试实现一个更复杂的协议并且不太清楚最好的方法是什么。我希望客户端启动一系列命令,让服务器运行它们并逐步告诉我它们是成功还是失败。
显然,我可以使用上面的代码来实现这一点,方法是编写使用第一个命令运行 exec 的客户端代码,检查来自服务器的结果,使用下一个命令运行 exec 等等。
关键是在我的情况下,一系列命令总是相同的,所以在客户端上只执行一个Meteor.call 会更有意义——服务器会知道要运行哪些命令。但是,我还希望在客户端输入单个命令时获得它们的结果——这是我不能做的,因为Meteor.call 当然只返回一次。
我正在寻找的是一种流或迭代器,通过它我可以向客户端发送大量消息,直到一切都完成。我见过一些名为meteor-streams 和类似的过时软件包,它们可能可以做类似的事情,但我认为 Meteor 本身必须有一种聪明的方法来解决这个问题。想法?
【问题讨论】:
标签: meteor ecmascript-6 stream generator