Javascript 进行多个fetch api调用如何检查所有调用是否已完成?
我正在从多个URL抓取内容。fetchapi到处使用承诺 我的one请求代码如下所示Javascript 进行多个fetch api调用如何检查所有调用是否已完成?,javascript,html,asynchronous,promise,ecmascript-6,Javascript,Html,Asynchronous,Promise,Ecmascript 6,我正在从多个URL抓取内容。fetchapi到处使用承诺 我的one请求代码如下所示 fetch(url).then((response)=>response.text()).then(function(html){//stuff}) 现在我有了URL数组,将进行多个调用,如何知道所有调用是否已完成 我尝试使用了Promise.all,但是如果你看到每个请求都有两个承诺。有没有更好的办法,也承诺。所有的支持也不是那么好 假设您有一个名为url的url数组 // separate function
fetch(url).then((response)=>response.text()).then(function(html){//stuff})代码>
现在我有了URL数组,将进行多个调用,如何知道所有调用是否已完成
我尝试使用了Promise.all
,但是如果你看到每个请求都有两个承诺。有没有更好的办法,也承诺。所有的支持也不是那么好 假设您有一个名为url的url数组
// separate function to make code more clear
const grabContent = url => fetch(url)
.then(res => res.text())
.then(html => (/* process html here */))
Promise
.all(urls.map(grabContent))
.then(() => console.log(`Urls ${urls} were grabbed`))
承诺。只要您链接请求,这里的所有
都可以正常工作。任何支持fetch
的地方,Promise
也会支持。好的,你能给我一个例子,如果你有一组url,你会如何使用Promise.allPromise.all(url.map(url=>fetch(url).然后(res=>res.text())。然后(html=>(/*stuff*/)。然后(()=>console.log('所有url都被抓取和处理过了))
谢谢@YuryTarabanko如果你摆出回答的姿势,我会接受的。你也可以做承诺。所有([url1,url2])。然后()well@clurect-这还不够。Promise.all()
接受一个承诺数组。如果只向它传递一个URL数组,它将没有任何用处。@clrectURL
是一个字符串数组(来自OP:现在我有了一系列URL)。用承诺来包装它没有多大意义。啊,是的,我的错。它应该是承诺。