JavaScript:打开列表中的第一个链接,等待,然后打开下一个链接



我正在尝试打开下面列表中的每个链接,并尝试在页面加载后执行一些操作。

流程应该像

  • 打开链接
  • 做一些动作
  • 打开列表中的下一个链接
  • 做一些动作
  • 移动到列表中的下一个链接

我有下面的代码。它没有打开第一个链接,而是直接跳到第二个链接并执行操作。我对Js Async不太了解。

非常感谢你在这方面的帮助!

let lst = ["https://twitter.com/pinsky", "https://twitter.com/adamiqshan"]
lst.forEach( link => {
setTimeout(openLink(link), 5000)
})
function openLink(URL){
window.open(URL, "_self")
}

用promise包装您的工作代码。如果你完成了你的工作,就兑现承诺。

构建一个承诺链/堆栈并执行它

let lst = ["https://twitter.com/pinsky", "https://twitter.com/adamiqshan"]
let wrapper = lst.map((url) => {
return () => {    
return new Promise((resolve) => {

// do your work here
// when your are done, call resolve()
// so the next url will be proceeded
console.log("proceed", url);
setTimeout(resolve, 5000);

});    
};
});

// create promise stack
wrapper.reduce((prev, cur) => {  
return prev.then(cur);
}, Promise.resolve());

最新更新