export function funcBSPos(diffMarkPoint, newLineHL, cycle) { console.log(cycle, '---') let newData = [] let pos = 0 if (cycle === '1h') { // let csvdata = [] newData = funcGetCsv().then((data) => { // 父函数调用子函数, 子函数有.then() 父函数必须要.then() return data; }); } return newData; let markBSPos = funcBSPos(diffMarkPoint, newLineHL, this.cycle).then((data) => { // 父函数调用子函数, 子函数有.then() 父函数必须要.then() return data; }); console.log(markBSPos) 父函数调用子函数用了.then() 为什么报错(0 , _T_bspos_bspos_js__WEBPACK_IMPORTED_MODULE_13__.funcBSPos)(...).then is not a function TypeError: (0 , _T_bspos_bspos_js__WEBPACK_IMPORTED_MODULE_13__.funcBSPos)(...).then is not a function at VueComponent.getCharts (webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/HelloWorld.vue?vue&type=script&lang=js&:225:123) at eval (webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/HelloWorld.vue?vue&type=script&lang=js&:267:14)
时间: 2024-04-13 18:30:17 浏览: 248
这个错误是因为你的函数`funcBSPos`没有返回一个`Promise`对象,所以不能使用`.then()`方法。你可以修改你的代码,将`funcGetCsv()`函数返回一个`Promise`对象,这样就可以链式调用`.then()`方法了。修改后的代码如下:
```javascript
export function funcBSPos(diffMarkPoint, newLineHL, cycle) {
console.log(cycle, '---')
let newData = []
let pos = 0
if (cycle === '1h') {
newData = funcGetCsv().then((data) => {
return data;
});
}
return newData;
}
let markBSPos = funcBSPos(diffMarkPoint, newLineHL, this.cycle).then((data) => {
console.log(data);
});
console.log(markBSPos);
```
请注意,在这个例子中,`funcGetCsv()`函数需要返回一个`Promise`对象才能使用`.then()`方法来处理异步操作的结果。
相关问题
export async function funcBSPos(diffMarkPoint, newLineHL, cycle) { console.log(cycle, '---') let newData = [] let pos = 0 if (cycle === '1h') { newData = funcGetCsv().then((data) => { return data; }); } return newData; } let makrPos = funcBSPos(diffMarkPoint, newLineHL, this.cycle).await ; 那这样也是可以的?
抱歉,你的代码中有一些语法错误。在`await`关键字后面应该跟着一个`Promise`对象,而不是直接使用`.await`。另外,使用`await`关键字的函数必须是`async`函数。以下是修正后的代码示例:
```javascript
export async function funcBSPos(diffMarkPoint, newLineHL, cycle) {
console.log(cycle, '---')
let newData = []
let pos = 0
if (cycle === '1h') {
newData = await funcGetCsv();
}
return newData;
}
async function processData() {
let markPos = await funcBSPos(diffMarkPoint, newLineHL, this.cycle);
console.log(markPos);
}
processData();
```
在调用`funcBSPos()`函数时,使用`await`关键字等待异步操作完成,并将结果赋值给`markPos`变量。然后,在`processData()`函数中使用`await`关键字等待异步操作完成后打印结果。
希望这次的回答能够帮到你,如果还有其他问题,请随时提问。
export function funcBSPos(diffMarkPoint, newLineHL, cycle) { console.log(cycle, '---') let newData = [] let pos = 0 if (cycle === '1h') { // let csvdata = [] newData = fetchData() console.log(newData); } return newData; } function fetchData() { try { let path = '/data/csvdoge-usdt.csv' axios.get(path).then((resp) => { const newData = d3.csvParse(resp.data); // 在这里处理CSV数据 return newData }) } catch (error) { // 处理错误 console.error(error); return null } } 这段代码对吗?
你的代码基本上是正确的,但是需要注意一些细节。下面是对你的代码进行的一些修改和说明:
```javascript
export function funcBSPos(diffMarkPoint, newLineHL, cycle) {
console.log(cycle, '---')
let newData = []
let pos = 0
if (cycle === '1h') {
// let csvdata = []
newData = fetchData().then((data) => {
console.log(data); // 在这里处理 newData
return data;
});
}
return newData;
}
function fetchData() {
try {
let path = '/data/csvdoge-usdt.csv';
return axios.get(path).then((resp) => {
const newData = d3.csvParse(resp.data);
// 在这里处理CSV数据
return newData;
});
} catch (error) {
// 处理错误
console.error(error);
return null;
}
}
```
对于 `funcBSPos` 函数,你使用了 `fetchData().then((data) => { })` 来处理异步请求的结果。这是正确的做法,因为 `fetchData()` 函数返回的是一个 Promise 对象,你可以使用 `.then()` 方法来注册回调函数并在异步操作完成后处理结果。
在 `fetchData` 函数中,你使用了 `return axios.get(path).then((resp) => { })` 来返回 Promise 对象。这样可以确保在异步请求完成后,`fetchData().then((data) => { })` 中的回调函数可以接收到正确的数据。
需要注意的是,在 `fetchData` 函数中,你应该使用 `return` 关键字来返回 Promise 对象,以便在调用该函数时可以进行链式调用,例如 `fetchData().then((data) => { })`。
另外,你还需要确保你的环境中已经正确导入了 `axios` 和 `d3` 模块,以便在运行时可以使用它们的功能。
希望这样能帮助到你。如果还有其他问题,请随时提问。
阅读全文