huang1125109
摩羯座的黄小姐
采纳率100%
2018-05-09 03:05 阅读 12.8k

Vue作用域,mounted调用methods方法return失败

5

图片说明
如上图,我在mounted()中调用methods中的方法getDictCity();
再控制台能打印出数据,但是return返回的话,再mounted()中就接不到数据;
请大家帮忙指点,谢谢!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • 已采纳
    showbo GoCityPass新加坡曼谷通票 2018-05-09 03:18

    你要搞清楚,return返回的是then处理函数的返回值,并不是getDictCity的返回值,就算你getDictCity最后有return返回内容,由于get是异步执行的,所以你也无法获取到请求的url返回的内容,除非get可以设置为同步请求的

    你要在mounted中获取ajax返回的数据,要用回调的形式来获取,而且你在哪里设置的cityTop也没见着

     getDictCity(name,callback){
    ns.get....then(res=>{
     let onlyArr=[];
     ......
     callback(onlyArr);//不能return,return没意义
    })....
    }
    

    ///这样来调用
    this.getDictCity('下游',function(arr){
    console.log(arr);
    })

    点赞 5 评论 复制链接分享
  • qq_27848369 hot2dog 2018-05-09 03:37

    showbo 说的很对, 你那个方法 return 是返回给回调函数的, 并不是主函数的返回值!

    补充说明: (1)既然初始化要请求 “上游”、 “中游” 、“下游” 的数据; 为什么不能放在 一个请求里面 ? 要分为三次请求呢?
    这样就可以用一个全局变量来接收请求结果, 而不需要反复调用三次!!!
    (2)理解js 请求: 一次请求中多做事, 尽量减少请求次数

    点赞 1 评论 复制链接分享
  • a718089112 a718089112 2018-05-09 03:16

    相当于ajax请求啊 调用了get方法 结果返回的值只能在方法内使用。你可以在return前 用参数调用一个别的js方法

    点赞 评论 复制链接分享
  • u012732432 碳烤八斤牛腩 2018-05-09 03:17

    首先,getDictCity这个函数,并没有明确返回值。return onlyArr只是.then的回调函数的返回值,可以给后面链式调用的.then继续使用,并不会返回到getDictCity这个函数体外面。
    其次,ns.get是个异步方法,回调函数里面的return并不能实时返回,你根本不能知道什么时候能拿到onlyArr的值。
    建议你只在mounted里面执行getDictCity这个函数即可,拿到onlyArr后的处理逻辑,在getDictCity这个函数里面写。

    点赞 评论 复制链接分享

相关推荐