因为使用ajax/axios接收接口数据并返回使用,函数调用接收函数返回值时返回为 undefined
// ajax
export function hot() {
let datas;
$.ajax({
type: 'GET',
url: 'http:url',
// data: datas,
async: false,
succeed: function (res) {
datas = res;
console.log(1, datas);
},
});
console.log(2, datas);
return datas;
}
// axios
export function hot1() {
axios
.get('http://192.168.28.176:8000')
.then(function (res) {
return res;
})
.catch(function (error) {
return error;
});
}
export function getBasicData() {
const datas = hot();
console.log(3, datas);
}
运行结果都是 3 1 2 或者3 1
我想要的结果是 接收接口数据返回值之后在执行我之后的代码(console.log(3, datas);)
async/await
肯定是在异步的回调then里面进行操作啊,不明白你为什么写成这样。
用fetch吧。
export async function getBasicData() {
const response = await fetch('http://192.168.28.176:8000')
const datas = await response.json()
console.log(3, datas)
}
可能代码不太全,这是精简后的代码
export function hot() {
return new Promise(function (resolve) {
axios
.get('http://url:8000')
.then(function (res) {
console.log(1, res.data);
resolve(res.data);
})
.catch(function (error) {
resolve(error);
});
});
}
export async function getBasicData() {
const datas = await hot();
console.log(3, datas);
const arr: any = [];
for (let index = 0; index < 6; index++) {
arr.push({
id: `${index}`,
name: '张三',
age: `1${index}`,
dates: datas,
address: '中华人名共和国',
beginTime: new Date().toLocaleString(),
endTime: new Date().toLocaleString(),
});
}
return arr;
}
export default defineComponent({
components: { BasicTable },
setup() {
return {
columns: getBasicColumns(),
data: getBasicData(),
};
},
想要在defineComponent组件里获取getBasicData()返回值,该怎么办