我只find相当复杂的答案,涉及类,事件处理程序和callback(这似乎是一个有点大锤的方法)。 我认为callback可能是有用的,但我似乎不能在最简单的情况下应用这些。 看到这个例子: <html> <head> <script type="text/javascript"> function myfunction() { longfunctionfirst(); shortfunctionsecond(); } function longfunctionfirst() { setTimeout('alert("first function finished");',3000); } function shortfunctionsecond() { setTimeout('alert("second function finished");',200); } </script> </head> <body> <a href="#" onclick="javascript:myfunction();return false;">Call my function</a> </body> </html> 在此,第二个函数在第一个函数之前完成; 什么是最简单的方法(或者是否有)?强制第二个函数延迟执行,直到第一个函数完成? – -编辑 – – 所以这是一个垃圾的例子,但感谢大卫Hedlund我看到这个新的例子,它确实是同步的(与我的浏览器在testing过程中崩溃!): <html> <head> <script type="text/javascript"> function myfunction() { longfunctionfirst(); shortfunctionsecond(); } […]
我需要在(相同)函数中执行两行之间添加延迟。 是否有任何有利的select来做到这一点? 注意:我不需要两个不同的函数来执行这个操作,而延迟不会影响其他函数的执行。 例如: line 1: [executing first operation]; line 2: Delay /* I need to introduce delay here */ line 3: [executing second operation]; 任何帮助是可观的。 提前致谢…
我有这个脚本保存在“test.vbs”: Set FSO = CreateObject("Scripting.FileSystemObject") Set File = FSO.OpenTextFile(workFolder &"\test.txt", 2, True) File.Write "testing" File.Close Set File = Nothing Set FSO = Nothing Set workFolder = Nothing 当我运行脚本时,我想传递“workFolder”variables的值。 我怎样才能做到这一点? 我可以做吗? 像“cscript test.vbs workFolder:'C:\ temp \'”也许? 奖金问题:是否需要用“Set workFolder = Nothing”清理传入的variables,或者VBSCript在终止时自动执行? 也许“Set File = Nothing”和“Set FSO = Nothing”也是不必要的? 如果你知道这两个问题的答案,请让我知道。
我需要在node.js函数中 result = execSync('node -v'); 这将同步执行给定的命令行,并返回所有由该命令文本标准输出。 PS。 同步是错误的。 我知道。 仅供个人使用。 UPDATE 现在我们有mgutz的解决scheme,它给了我们退出代码,但不是标准输出! 还在等待更精确的答案。 UPDATE mgutz更新了他的答案,解决scheme在这里:) 另外,正如dgo.a所提到的,有独立的模块exec-sync 更新2014-07-30 ShellJS lib到达。 考虑这是现在最好的select。 更新2015-02-10 最后! execSync 0.12本地支持execSync 。 查看官方文档
当我在命令行上回显$ PATH时,它会返回 /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Applications/MAMP/Library/bin:/usr/local/git/bin:/usr/X11/bin 当我执行这个PHP代码 exec('echo $PATH; whoami; less /etc/paths; 2>&1') 我明白了 string 'echo $PATH; whoami; less /etc/paths; 2>&1' (length=56) array 0 => string '/usr/bin:/bin:/usr/sbin:/sbin' (length=29) 1 => string 'eric' (length=4) 2 => string '/usr/bin' (length=8) 3 => string '/bin' (length=4) 4 => string '/usr/sbin' (length=9) 5 => string '/sbin' (length=5) 6 => string '/usr/local/bin' (length=14) […]
我正在处理一个应用程序有一个关于从Java应用程序运行shell命令的问题。 这里是代码: public String execRuntime(String cmd) { Process proc = null; int inBuffer, errBuffer; int result = 0; StringBuffer outputReport = new StringBuffer(); StringBuffer errorBuffer = new StringBuffer(); try { proc = Runtime.getRuntime().exec(cmd); } catch (IOException e) { return ""; } try { response.status = 1; result = proc.waitFor(); } catch (InterruptedException e) { return […]
我在本地主机上运行Apache。 从一个以www用户身份运行的PHP脚本,我想在我的机器上控制Rhythmbox播放。 到目前为止,我的PHP脚本中有一个简单的命令: exec('rhythmbox-client –pause'); 这个效果很好,当我从命令行运行它,但如果它作为www用户运行,我想rhythmbox-client不知道/不能访问我的Rhythmbox实例。 是否有一个简单的方法让PHP脚本以我的用户身份运行,而不是由www用户运行,或者告诉rhythmbox-client哪个实例要控制? 总的应用是,当我的电话摘机时,它会调用我的PHP脚本暂停音乐,并在电话挂机时恢复播放。 我爱VoIP电话! 解决方法:感谢Carpetsmoker和Tarek我用sudo作为答案,但是有一些问题。 为了克服它们,我做了以下几点: 创build一个bash脚本来调用rhythmbox-client 。 这个bash脚本是在PHP中使用sudo执行的,如下面的答案所述。 不幸的是, rhythmbox-client不知道要控制什么环境,所以bash脚本如下所示: #! /bin/bash DBUS_ADDRESS=`grep -z DBUS_SESSION_BUS_ADDRESS /proc/*/environ 2> /dev/null| sed 's/DBUS/\nDBUS/g' | tail -n 1` if [ "x$DBUS_ADDRESS" != "x" ]; then export $DBUS_ADDRESS /usr/bin/rhythmbox-client –pause fi 现在bash脚本可以通过PHP和wwwuser执行,我的手机可以暂停/播放我的音乐!
所以即时通讯设法写一些需要抓住命令输出的东西,然后虐待,然后将其传递给另一个程序。 但即时通讯有一个问题,我不能解决如何得到命令输出,并将其存储下面是我有什么样的 if(fork() == 0){ execl("/bin/ls", "ls", "-1", (char *)0); /* hopefully do something with the output here*/ }else{ *other stuff goes here* }` 所以基本上我不知道是否有任何方法我可以从“execl”得到的输出,并将其传递给其他东西(例如通过存储在某种缓冲区)。 任何build议将是伟大的。 谢谢你们
有没有方法在窗口中,我们可以执行批处理脚本没有* .bat扩展?
我知道可以读取pipe道输出命令吗? 但是获得回报值呢? 例如,我想执行: execl("/bin/ping", "/bin/ping" , "-c", "1", "-t", "1", ip_addr, NULL); 我怎么能得到返回值的ping命令,以找出它是否返回0或1?