之前想透過 Java 的 Nashron 執行 setTimeout 這個定時執行的 JavaScript 函式碰到問題 看起來 Nashorn 並沒有實作關於非同步的 JavaScript 機制 我並沒有花太多時間查閱相關規格,只能猜想也許他鼓勵設計者使用 Java 的 async 機制 不過有時候需要執行的JavaScript Code 沒辦法排除 setTimeout 而改寫成 Java code 查到的相容寫法如下: var setTimeout, clearTimeout, setInterval, clearInterval; (function () { var timer = new java.util.Timer(); var counter = 1; var ids = {}; setTimeout = function (fn,delay) { var id = counter++; ids[id] = new JavaAdapter(java.util.TimerTask,{run: fn}); timer.schedule(ids[id],delay); return id; } clearTimeout = function (id) { ids[id].cancel(); timer.purge(); delete ids[id]; } setInterval = function (fn,delay) { var id = counter++; ids[id] = new JavaAdapter(java.util.TimerTask,{run: fn}); timer.schedule(ids[id],delay,delay); return id; } clearInterval = clearTimeout; setTimeout(function(){ [your function code]