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

vue中遇到的小问题,this.XXX不能直接拿到需要等待一下才能拿到是为什么啊?

vue中遇到的小问题,this.XXX不能直接拿到需要等待一下才能拿到是为什么啊?

大话西游666 2019-03-14 18:19:55
vue中遇到的小问题,this.XXX不能直接拿到需要等待一会才能拿到是为什么啊?我现在是在调用两个接口,比如是A和B,等A结束之后我才可以调用B接口,(因为A接口返回数据我拿到B接口要用到)我代码是这样的                        let promise = new Promise(function(resolve, reject) {            //获取Access Token                          axios.get("api/token?grant_type=client_credential&appid=appid&secret=secret")                                        .then(function(response) {                                            _this.access_token=response.data.access_token;                                            console.log(_this.access_token);                                        })                                        .catch(function(error) {                                            // error                                            console.log(error);                                        });                            resolve();                        });                    promise.then(function() {                      //获取jsapi_ticket                      console.log(_this.access_token);                       axios.get("api/ticket/getticket?access_token="+_this.access_token+"&type=jsapi")                                        .then(function(response) {                                            //数据    success                                            console.log(response);                                        })                                        .catch(function(error) {                                            // error                                            console.log(error);                                        });                    });                    A接口完成之后抛出resolve B接口访问,但是我的_this.access_token是没有值得,必须在里面加一个一次性定时器,延迟一下才可以,请问是为什么呢?是空的,加个延迟就可以了,为什么呢?          setTimeout(()=>{                          console.log(_this.access_token);                      },600)
查看完整描述

4 回答

?
繁星coding

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

通过resolve(response.data.access_token)向下传递就可以了


查看完整回答
反对 回复 2019-04-02
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

你好,试试axios.get().then(function(response){
resolve(); //这个放在请求完成的函数中调用
})

查看完整回答
反对 回复 2019-04-02
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

new promise改成箭头函数,分分钟可以


查看完整回答
反对 回复 2019-04-02
?
幕布斯6054654

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

resolve()的执行位置有问题,请求没有响应就直接被resolve()到成功状态,resolve()写在响应为true的判断里


查看完整回答
反对 回复 2019-04-02
  • 4 回答
  • 0 关注
  • 991 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号