为了账号安全,请及时绑定邮箱和手机立即绑定

同一个接口多次触发,怎么让他们返回结果后在触发第二次,而不是并行触发

同一个接口多次触发,怎么让他们返回结果后在触发第二次,而不是并行触发

幕布斯6054654 2019-03-15 14:11:30
最后结果要求输出12345,最好只在接口函数里面改,因为有可能,外面是多个地方会调用
查看完整描述

3 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

所有进入myFetch里的请求都会被缓存进一个数组


function AjaxFuc() {

    let flag = true;

    const bufferArray = [];


    return function myFetch(i) {

        if (flag) {

            flag = false;

            setTimeout(() => {

                console.log(i);


                flag = true;

                if ((i = bufferArray.shift() )!== undefined) {

                    myFetch(i);

                }


            }, i % 2 === 0 ? 200 : 300);

        } else {

            bufferArray.push(i);

        }

    }

}


var myFetch = AjaxFuc();


let a = [1, 2, 3, 4, 5];

a.map((v, i) => {

    this.myFetch(v);

})


查看完整回答
反对 回复 2019-03-18
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

const o={

        ajaxFun:function(i){

            return new Promise((resolve,reject)=>{

                setTimeout(function(){

                    console.log(i);

                    resolve(i);

                },i%2==0?200:300)

            });

        },

        mounted:function(){

            const a=[1,2,3,4,5,6];

            var g=a[Symbol.iterator]();

            var me=this;

            function next(){

                var v=g.next().value;

                if(v){

                    me.ajaxFun(v).then(next);

                }

            }

            next();

        }

    }

    o.mounted();


查看完整回答
反对 回复 2019-03-18
?
BIG阳

TA贡献1859条经验 获得超6个赞

AjaxFuc 需要一个 callback 参数,如果没有,那就加上。剩下的,顺序控制什么的放到 callback 里就好了。


查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 1483 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信