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

https://img3.mukewang.com/5c8f422c00010c9607800383.jpg

最后结果要求输出12345,最好只在接口函数里面改,因为有可能,外面是多个地方会调用

幕布斯6054654
浏览 1484回答 3
3回答

波斯汪

所有进入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);})

慕姐4208626

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();

BIG阳

AjaxFuc 需要一个 callback 参数,如果没有,那就加上。剩下的,顺序控制什么的放到 callback 里就好了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript