我的结论是,经过长时间的搜索和尝试,它不能在node.js上的js上完成。
一个例子(适用于所有承诺的例子):
我需要开发一个通用JS函数来获取linux命令并返回结果,结果是linux命令的输出(例如:pwd输出:/家/jery)
函数需要等待结果,因为下一个命令行需要它的输出-所以编程是串行的。
我可以执行一个循环来等待Promise完成,但是无限循环将消耗CPU,并且nodejs没有真实的的sleep命令。
result1 = shell("pwd")
result2 = shell("ls " + result1)
这个shell linux只是一个例子,我同样需要调用url的函数,或者从mysql服务器获取sql查询的函数。要点是串行编程-所以解决方案必须符合。
再给予一个例子,shell()函数将被调用数百次,等待那么多的承诺完成是不可能的,因此一个函数的输出需要成为其他函数的输入。
谢谢你j.r
尝试序列化Promises函数导致等待时CPU占用率过高。
2条答案
按热度按时间nwnhqdif1#
有了这段代码,我可以使用返回值
result
打印dir命令的输出。这回答了您关于捕获shell命令输出的问题的第一部分。尝试从异步函数中生成同步函数不仅困难且不切实际,而且解决方案也很可能是您应该尽量避免的一些黑客行为osh3o9ms2#
把你的文件保存为
foo.mjs
,这个也可以用(改编自@Isak The Hacker)