在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  HTML/ 無法獲取axios請求的返回值,請各位幫忙看看

無法獲取axios請求的返回值,請各位幫忙看看

function getNewToken(token){
  axios.get("someapi?token="+token).then(res =>{
    if (res.data.h.code === 200){
      let result = res.data;
      console.log("獲取結(jié)果",result);  //在此得到了預(yù)期的結(jié)果
      return result;
    }
  });
}
let new_token = getNewToken("abc");
console.log("new_token",new_token);  //輸出的結(jié)果是undefined

setTimeout(()=>{
    console.log("new_token",new_token);  //輸出的結(jié)果仍然是undefined
},5000);

如上述問題,應(yīng)該怎么解決?
謝謝。

回答
編輯回答
愛礙唉

axios本身就是基于promise的,你在一個then 中return 一個result后,只會讓下一個then接收到這個,而并不是讓這個方法返回result,通常的做法是提交commit()存在state中。

2017年9月5日 05:39
編輯回答
款爺

異想天開了,異步的函數(shù)不能夠返回,但是你可以使用回調(diào)函數(shù)

function getNewToken(token,callback){
  axios.get("someapi?token="+token).then(res =>{
    if (res.data.h.code === 200){
      let result = res.data;
      console.log("獲取結(jié)果",result);  //在此得到了預(yù)期的結(jié)果
      typeof callback === 'function' && callback.call(window,result);
      return result;
    }
  });
}

// 調(diào)用

getNewToken("abc", data => {
    console.log("new_token",data );
});

你還可以使用es6的Promise對象 一樣的道理

2017年4月21日 16:31
編輯回答
陪她鬧

異步請求里用return是沒有啥用的,定義全局變量result

let result = {};
function getNewToken(token){
  axios.get("someapi?token="+token).then(res =>{
    if (res.data.h.code === 200){
      result = res.data;
      console.log("獲取結(jié)果",result);  //在此得到了預(yù)期的結(jié)果
    }
  });
}
2018年7月8日 01:45
編輯回答
獨白

搞清楚什么是 異步 再來問

2018年1月5日 10:14
編輯回答
久愛她

題主你的 getNewToken 函數(shù)沒有返回值,自然 log 出來就是 undefined:

function noReturn(a) {
    a += 1
}
var b = noReturn(1)
console.log(b)
// => undefined

當(dāng)然如果你修改了:

function getNewToken(token) {
  return axios.get("someapi?token="+token).then(res =>{
      // do wtf you want
  })
}

var promiseReturn = getNewToken('123')
console.log(promiseReturn)

這樣只會得到一個 promise 的狀態(tài),并沒有想要的答案。

你需要 handle promise,用好 promise,現(xiàn)有答案中 @小風(fēng)哥 寫的就是基本引用了。

2017年11月3日 08:57
編輯回答
野橘
function getNewToken(token){
 return axios.get("someapi?token="+token)
}
getNewToken('abc').then(res => {
    console.log(res)
    if (res.data.h.code === 200){
      let result = res.data;
      console.log("獲取結(jié)果",result);  //在此得到了預(yù)期的結(jié)果
      typeof callback === 'function' && callback.call(window,result);
      return result;
    }
})
2017年1月30日 10:53