共被编辑 3 次

版本 更新时间 贡献者 编辑原因 操作
#r3 9月12日 toesbieya367 更新问题 查看

js 怎么避免重复的异步操作(不问了,目前没办法后台做到,只能改造前端了)

let x=0;

function add() {
    return new Promise(resolve => {
        if (x===1) return resolve(x);

        //这里是一个异步操作
        setTimeout(()=>resolve(x+=1),1000);
    })
}

add().then(r=>console.log(r));
add().then(r=>console.log(r));
add().then(r=>console.log(r));

我要怎么样保证add()在x===1时不会进行异步操作?而且我不知道会有多少个add()。

具体场景是:
用户进入一个页面时,会触发多个ajax,这些ajax的后台方法里都要调一次add()去验证一下权限(验证权限是个异步操作,即setTimeout),如果验证过了(即X===1),那就不用验证直接放行,否则拦截这个请求。

#r2 9月11日 toesbieya367 更新问题 查看

js 怎么避免重复的异步操作

let x=0;

function add() {
    return new Promise(resolve => {
        if (x===1) return resolve(x);

        //这里是一个异步操作
        setTimeout(()=>resolve(x+=1),1000);
    })
}

add().then(r=>console.log(r));
add().then(r=>console.log(r));
add().then(r=>console.log(r));

我要怎么样保证add()在x===1时不会进行异步操作?而且我不知道会有多少个add()。

具体场景是:
用户进入一个页面时,会触发多个ajax,这些ajax的后台方法里都要调一次add()去验证一下权限(验证权限是个异步操作,即setTimeout),如果验证过了(即X===1),那就不用验证直接放行,否则拦截这个请求。

#r1 9月11日 toesbieya367 创建问题 查看

js 怎么避免重复的异步操作

let x=0;

function add() {
    return new Promise(resolve => {
        if (x===1) return resolve(x);

        //这里是一个异步操作
        setTimeout(()=>resolve(x+=1),1000);
    })
}

add().then(r=>console.log(r));
add().then(r=>console.log(r));
add().then(r=>console.log(r));

我要怎么样保证add()在x===1时不会进行异步操作?而且我不知道会有多少个add()。