export async function funcBSPos(diffMarkPoint, newLineHL, cycle) { console.log(cycle, '---') let newData = [] let pos = 0 if (cycle === '1h') { // let csvdata = [] newData = fetchData().then((data) => { newData = data; // 在这里处理 newData console.log(newData); }); } return newData; } async function fetchData() { try { const response = await axios.get('/data/csvdoge-usdt.csv'); const newData = d3.csvParse(response.data); // 在这里处理CSV数据 return newData } catch (error) { // 处理错误 console.error(error); return null } } 为什么不是在 axios.get(url).then((resp) => { }) 这里使用.then 而是在 fetchData().then((data) => { }) 这里使用?
时间: 2024-04-12 22:33:33 浏览: 90
node-stream-to-async-iterator:ES节点流的异步迭代器包装器
在你的代码中,你使用了 `async/await` 来处理异步请求。`async/await` 是一种更直观、更易于理解的异步编程方式,它允许你以同步的方式编写异步代码。
在 `fetchData()` 函数中,我们使用 `await` 关键字等待 `axios.get()` 方法的结果。使用 `await` 关键字可以使程序在等待异步操作完成时暂停执行,并将异步操作的结果赋值给变量 `response`。由于 `await` 关键字只能在 `async` 函数中使用,因此 `fetchData()` 函数被声明为了一个 `async` 函数。
接着,我们使用 `d3.csvParse()` 方法将获取到的 CSV 数据进行解析,并将解析后的数据赋值给 `newData` 变量。最后,我们通过 `return newData` 语句将解析后的数据返回。
由于 `fetchData()` 是一个异步函数,它返回的是一个 Promise 对象。在调用 `fetchData()` 函数时,我们可以使用 `.then()` 方法来注册一个回调函数,以处理异步操作完成后的结果。因此,在调用 `fetchData()` 函数时,我们可以使用 `.then()` 方法来处理异步请求的结果。
在你的代码中,你使用了 `.then()` 方法来处理 `fetchData()` 函数返回的 Promise 对象。当异步操作完成时,`.then()` 方法中的回调函数会被调用,并且传递异步请求的结果作为参数。在这个例子中,我们将结果赋值给 `newData` 变量,并在回调函数中处理 `newData`。
总结来说,你在 `fetchData().then((data) => { })` 中使用 `.then()` 是因为 `fetchData()` 返回的是一个 Promise 对象,你想在异步请求完成后处理结果。而在 `axios.get(url).then((resp) => { })` 中使用 `.then()` 是因为 `axios.get()` 返回的也是一个 Promise 对象,你想在异步请求完成后处理返回的响应数据。
希望这能解答你的疑问。如果还有其他问题,请随时提问。
阅读全文