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

Ada*_*han 1 javascript async-await

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

流量应该是这样的

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

我有以下代码。它没有打开第一个链接,而是直接跳转到第二个链接并执行操作。我对 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")
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*arc 5

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

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

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());
Run Code Online (Sandbox Code Playgroud)