搜索
javascript - fetch 如何同时发起两个请求?
阿神
阿神 2017-04-10 16:27:10
[JavaScript讨论组]

用 ajax 的话,知道方案,在这里 Multiple Simultaneous Ajax Requests (with one callback) in jQuery,

$.when(firstPromise, secondPromise).then(function(firstData, secondData) {
  // do something
});

那如果用 fetch 的话,该如何写呢?

根据传统 Ajax 已死,Fetch 永生尝试了一下如下代码,但是浏览器还不支持 await 吧。

fetchTwo(url1, url2);

function fetchTwo(req1, req2) {
    try {
        let res1 = await fetch(req1);
        let res2 = await fetch(req2);
        let data1 = await res1.text();
        let data2 = await res2.text();
        console.log(data1);
        console.log(data2);
    } catch (e) {
        console.log("Oops, error", e);
    }
}
阿神
阿神

闭关修行中......

全部回复(2)
阿神

Promise.all()?
但是IE还不支持

阿神

好吧。其实本质需求是,希望用模板引擎 mustache,然后,需要同时获取模板数据, 于是考虑发起两个请求,并且希望用 fetch。

另外一个办法是,在 Server 端先 mustache 渲染好,再一个fetch 直接拿过来。但是目前找到的 ASP.NET MVC mustache 版本有点问题。

服务器端 mustache.js 运行又还没有找到方案与 MVC 集成。为此还试了一下 React.NET,装了一个 ...V8,结果还是客户端执行的。

所以只好继续考虑 Client 端的 mustache.js,发起两个请求再渲染。

解决方案:

var urls = ["html1.html", "html2.html"];
Promise.all(urls.map(url =>
    fetch(url).then(resp => resp.text())
)).then(texts => {
    console.log(texts);
});

执行结果:

方案兼容性(Promise + fetch):

polyfill

  • Pormise: es6-promise

  • fetch: fetch

参考:

How can I fetch an array of URLs with Promise.all?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号