获取请求的对象 let obj = axios.get(path).then((resp) => {}) 但是 axios.get(path).then((resp) => {}) 是链式调用,是两个函数,有两次返回值,第一个是newData, 第二个是obj 最后把这个obj 返回给上级 函数,return obj 这样理解对不对
时间: 2024-04-12 12:31:55 浏览: 94
axios 实现post请求时把对象obj数据转为formdata
你的理解基本正确,但需要注意一点。在 `axios.get(path).then((resp => {})` 这个链式调用中,确实会有两个返回值。第一个返回值是在 `.then()` 方法中处理异步操作结果时返回的值,第二个返回值是整个链式调用的 Promise 对象。
所以,在你的代码中,你可以将 `axios.get(path).then((resp) => {})` 的结果赋值给 `obj` 变量,然后将 `obj` 返回给上层函数。这样,上层函数在调用 `funcBSPos()` 时可以继续链式调用 `.then()` 方法处理异步操作的结果。
下面是对你的代码进行的修改和说明:
```javascript
export function funcBSPos(diffMarkPoint, newLineHL, cycle) {
console.log(cycle, '---');
let newData = [];
let pos = 0;
if (cycle === '1h') {
newData = fetchData().then((data) => {
console.log(data); // 在这里处理 newData
return data;
});
}
return newData;
}
function fetchData() {
try {
let path = '/data/csvdoge-usdt.csv';
let obj = axios.get(path).then((resp) => {
const newData = d3.csvParse(resp.data);
// 在这里处理CSV数据
return newData;
});
return obj; // 返回整个链式调用的 Promise 对象
} catch (error) {
// 处理错误
console.error(error);
return null;
}
}
```
这样,当调用 `funcBSPos()` 函数时,你可以通过链式调用 `.then()` 方法来处理异步操作的结果。
希望这样解答了你的疑问。如果还有其他问题,请随时提问。
阅读全文