待两个接口都返回再操作的情况,怎么处理,有哪些解决方法

发布于 2022-09-07 20:54:15 字数 473 浏览 14 评论 0

fetch('http://10.3.134.173/jsonp-test/data/dish_getbypage.php?start=1',
    ).then((response)=>
        response.json()
    ).then((res)=>{
        console.log(res[0].name);
    });
fetch('http://10.3.134.173/jsonp-test/data/dish_getbypage.php?start=2',
    ).then((response)=>
        response.json()
    ).then((res)=>{
        console.log(res[0].name);
    })

同时发起请求,比如一个等待一秒,一个等待两秒返回,然后待都返回结果然后执行后续操作,具体该怎么操作,用promise.all怎么写

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

友欢 2022-09-14 20:54:15

提问前,代码请勿使用图片

假设你的两个promise分别是 Func1()Func2()

let pr_task = [Func1,Func2];
Promise.all(pr_task).then(function(){
    //Here,code  After All Promise
})

根据问题的补充

fetch('http://10.3.134.173/jsonp-test/data/dish_getbypage.php?start=1',
    ).then((response)=>
        response.json()
    ).then((res)=>{
        console.log(res[0].name);
    });
fetch('http://10.3.134.173/jsonp-test/data/dish_getbypage.php?start=2',
    ).then((response)=>
        response.json()
    ).then((res)=>{
        console.log(res[0].name);
    })

如果你是想等 fetch('http://10.3.134.173/jsonp-test/data/dish_getbypage.php?start=1'),那么直接

let pr_task = [];
pr_task.push(fetch('http://10.3.134.173/jsonp-test/data/dish_getbypage.php?start=1'))
pr_task.push(fetch('http://10.3.134.173/jsonp-test/data/dish_getbypage.php?start=2'))

Promise.all(pr_task).then(function(){
    //Here,code  After All Promise
})

只要保证pr_task这个数组的值都是一个promise,那么Promise.all()就会等待所有的数据,并且按照原数组的顺序给出resolve的结果组成的一个数组

怪异←思 2022-09-14 20:54:15
let p1 = new Promise((resolve, reject) => {
    // 第一个接口请求
    fetch('....').then((res) => {
        resolve(res);
    })
})

let p2 = new Promise((resolve, reject) => {
    // 第二个接口请求
    fetch('....').then((res) => {
        resolve(res);
    })
})

Promise.all([p1,p2]).then(data => {
    console.log(data);
})
如此安好 2022-09-14 20:54:15

首先我的是基于axios的 也就是封装的promise

        getUser () { 
            return this.$http.get('/api/v1/account/login_user')
        },
        getUserFeedback () {
            return this.$http.get('/api/v1/user_feedbacks')
        }
        接下来就是等待回调
        this.$http.all([this.getUser(),this.getUserFeedback()])
            .then(this.$http.spread(function(acct,perms){
                acct和perms也就是你两个后端接口返回的data,也就你可以操作数据
        }))
        希望帮到你
扶醉桌前 2022-09-14 20:54:15

你的需求应该是 第一个接口数据拿到之后 再拿第二个接口的数据?

椒妓 2022-09-14 20:54:15

Promise.all

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文