我想使用async/await实现最快回来的请求数据最快处理

我现在要请求多个地方的数据并把数据渲染在页面上,希望最快到的数据最快显示在页面上

之前是用promise写的


urls.map(function(url) {

    request(url).then(function(data) {

      render(data);

    })

})

现在希望改用async/await写,看了网上资料时发现都实现不了


var datas = await Promise.all(urls.map(function(url){

    return request(url);

}))

这个我得等数据都回来后才可以显示页面

 var promises = urls.map(function (url) {

    return request(promises);

})

 for(var i =0; i < promises .length;i++) {

   let data = await promises 

   render(data)

}

这个是第一个请求最早处理,我获取不了最快的那个

为了获取最快那个我改成这样的


 var promises = urls.map(function (url) {

    return request(promises);

})

 for(var i =0; i < promises .length;i++) {

   let data = await promises.then(function(data) {

   render(data)

})

   

}

但是这样写还是摆脱不了then,和用promise写没啥区别,还有别的方法不


月关宝盒
浏览 552回答 1
1回答

慕少森

供参考如果是拿到第一个后扔掉其它的async function fn () {&nbsp; // ....&nbsp; render(await Promise.race(urls.map(request)))}如果是都渲染urls.forEach(async url => render(await request(url)))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript