function queueFn(fn){ const queue = []; let running = false; function next(){ if(running) return; if(!queue.length) return; running = true; const [[str, {zIndex = "", millisecond = 3000}], context] = queue.pop(); try{ fn.call(this, str, {zIndex, millisecond}); } catch(err){console.error(err)} setTimeout(function(){ running = false; next(); }, millisecond); } return function(...args){ queue.push([args, this]); next(); } } const queuedMyAlert = queueFn(myAlert); 原来调用 myAlert 的地方,改为调用 queuedAlert 即可。