如何在多个接口请求成功后才调用方法

需求的问题是现在要a方法调用a接口,获得a接口的数据,再调用方法b,获得b接口的数据,再用a,b接口的数据,作为参数用c方法调取c接口,这里存在a接口与b接口调用时间的未知,请问如何单线的调用完整,这里并不想作为接口调取成功的回调函数反复回调

阅读 9.6k
9 个回答
const [a, b] = await Promise.all([getA(), getB()]);
const c = await getC(a, b);

Promise.all(func1(),func2()).then(res=>{
doSomething()
})

在c方法中添加if判断

用promise异步就可以了啊

新手上路,请多包涵

watch到接口数据后才执行方法

使用ES7新特性
syanc await轻松解决

通过babel转换即可

So ez

说一个比较原始的方法,定时器。用jQuery实现一下

var time = 0;
var dataA = {};
var dataB = {};
// a接口
function funca() {
    $.ajax({
        ...
        success: function(data) {
            dataA = data
            time ++
            if (time === 1) {
                func();
            }
        }
    })
}

// b接口
function funcb() {
    $.ajax({
        ...
        success: function(data) {
            dataB = data
            time ++
            if (time === 1) {
                func();
            }
        }
    })
}

// c接口
function func() {
    $.ajax({
        data: {
            data1: dataA,
            data2: dataB
        },
        success: function(data){
            console.log(data)
        }
    })
}
func1(){
    httpxxxxxx.then(data=>resolve(data)).catch(reject(data))
}
func2(){
    httpxxxxxx.then(data=>resolve(data)).catch(reject(data))
}
funAll(){
    Promise.all(func1(),func2()).then(res=>{
        data1=res[0]
        data2=res[1]
        dosomething()
    })
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏