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。

阅读 6.7k
3 个回答

既然你都说了里面有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
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题