H5W3
当前位置:H5W3 > 其他技术问题 > 正文

【Web前端问题】JS如何让一个function在请求之后再返回值?

function checkToken(token: string) {
    let flag:boolean = false;
    if (Cookies.get('token')) {
            Reqwest({
                url: 'token/check'
            }).then(res=> {
                flag = true
            }).fail((res) => {
                flag = false;
            })
            return flag;
    } else {
        flag = false;
    }
    console.log('checkToken flag', flag);
    return flag
 
}

大概能看懂吧,就是里面有个请求来根据返回值确定token是否有效。然后现在的问题是,此函数先return再执行reqwest,我想在reqwest请求之后,次函数再返回,怎么搞? 同时reqwest返回的是一个proimise。

回答:

既然你都说了里面有Promise对象了,也就涉及异步编程,就继续返回一个Promise对象,在外部对这个返回的Promise进行判断操作

回答:

就是不存在或是Req返回失败这个函数就是失败呗:

function checkToken(token) {  
    if (Cookies.get('token')) {
        return  Reqwest({url: 'token/check'});
    }
    return new Promise(function(resolv,reject){ reject(/*自行定义参数*/); });
}

回答:

将异步代码单独封装成一个返回promise实例的函数,在同步代码中使用这个函数,.then()中即可获取相应的值,个人觉得楼主可能想要的是以下的代码

function retPromise() {
    return new Promise(function(resolve,reject){
        Reqwest({
            url: 'token/check'
        }).then(res=> {
            resolve(true)
        }).fail((res) => {
            reject(false)
        })
    }
}

function checkToken(token) {
    let flag = false
    if (Cookies.get('token')) {
        retPromise().then(function(res){
            flag = res
        })
    })
    } else {
        flag = false
    }
    console.log('checkToken flag', flag);
    return flag
}

本文地址:H5W3 » 【Web前端问题】JS如何让一个function在请求之后再返回值?

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址