【发布时间】:2019-05-26 13:06:33
【问题描述】:
我正在尝试运行一个函数,在该函数中我打开一个新窗口到一个 url,并在 1.5 秒后关闭新窗口。我正在尝试循环并执行 3 次。但是,代码会同时打开所有三个新窗口,然后执行超时。我希望只有在上一个窗口关闭后才能打开下一个窗口。
function test(url){
let a = window.open(url);
a.focus();
setTimeout(()=>{
a.close();
}, 1500);
};
const repl = 'mysite.com';
for(let i = 0; i < 3; i++){
test(repl);
}
【问题讨论】:
-
在超时后使用回调来“做其他事情”,例如。
function test(url, onClosed) { ... setTimeout(() => { a.close(); onClosed(); } }。然后使用该回调链接调用(例如调用下一个test函数),而不是循环。或者,请参阅 Promises 等。
标签: javascript loops asynchronous closures