虽然以下代码可以很好地调用python脚本并获得输出:
s = spawn 'python', ['-u', 'foo.py']
s.stdout.on 'data', (data) -> msg.send data.toString()
s.stderr.on 'data', (data) -> msg.send data.toString()
foo.py返回许多不同的响应(它在运行时返回更新)。
例如:
def function1():
print "Function 1 complete"
def function2():
print "Function 2 complete"
function1()
function2()
Hubot不会以一致的顺序显示这些结果。我知道如果多次调用msg.send
会发生这种情况。
虽然我知道我可以重写foo.py以表现不同,但其他进程依赖于foo.py并且我无法改变其行为。
我想知道在过程中收集响应的过程可能是什么,并发送单个msg.send
,希望单次调用msg.send将保留过程输出的顺序。
答案 0 :(得分:1)
Imho,最好是通过添加q
或bluebird
例如,它会导致:
Promise.all([function1(), function2()]).then (res) ->
msg.send res.join(", ")