Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript:打开列表中的第一个链接,等待,然后打开下一个链接_Javascript_Async Await - Fatal编程技术网

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

JavaScript:打开列表中的第一个链接,等待,然后打开下一个链接,javascript,async-await,Javascript,Async Await,我正在尝试打开下面列表中的每个链接,并尝试在页面加载后执行一些操作 流程应该是这样的 打开链接 做一些动作 打开列表中的下一个链接 做一些动作 从列表中移动到下一个链接 我有下面的代码。它不打开第一个链接,而是直接跳到第二个链接并执行操作。我对Js异步不是很了解 非常感谢你在这方面的帮助 let lst = ["https://twitter.com/pinsky", "https://twitter.com/adamiqshan"] lst.forEa

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

流程应该是这样的

打开链接 做一些动作 打开列表中的下一个链接 做一些动作 从列表中移动到下一个链接 我有下面的代码。它不打开第一个链接,而是直接跳到第二个链接并执行操作。我对Js异步不是很了解

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

let lst = ["https://twitter.com/pinsky", "https://twitter.com/adamiqshan"]

lst.forEach( link => {
    setTimeout(openLink(link), 5000)
})

function openLink(URL){
    window.open(URL, "_self")
}

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

在此基础上构建承诺链/堆栈并执行它

设lst=[https://twitter.com/pinsky, https://twitter.com/adamiqshan] 让包装器=lst.mapurl=>{ 返回=>{ 返回新PromiseSolve=>{ //你在这里工作吗 //完成后,请致电resolve //因此,下一个url将继续 console.logprocedure,url; setTimeoutresolve,5000; }; }; }; //创建承诺堆栈 wrapper.reduceprev,cur=>{ 返回上一个日期;
}承诺。决心 用承诺包装你的工作代码。 如果你完成了你的工作,就要兑现承诺

在此基础上构建承诺链/堆栈并执行它

设lst=[https://twitter.com/pinsky, https://twitter.com/adamiqshan] 让包装器=lst.mapurl=>{ 返回=>{ 返回新PromiseSolve=>{ //你在这里工作吗 //完成后,请致电resolve //因此,下一个url将继续 console.logprocedure,url; setTimeoutresolve,5000; }; }; }; //创建承诺堆栈 wrapper.reduceprev,cur=>{ 返回上一个日期;
}承诺。决心;关于setTimeout使用的快速评论-第一个参数应该是函数,因此您的代码应该是setTimeout=>openLinklink,5000。但是Marc下面使用Promissions的回答是一种更干净的方法来处理这种情况。关于setTimeout使用的快速评论-第一个参数应该是一个函数,所以你的代码应该是setTimeout=>openLinklink,5000。但是Marc下面的回答是使用承诺是处理这种情况的更干净的方法。