gpt4 book ai didi

javascript - TypeError : (intermediate value). 那么不是一个函数

转载 作者:行者123 更新时间:2023-11-28 17:16:30 28 4
gpt4 key购买 nike

我使用react 16、babel 7、webpack 4。

另一个项目正在运行,但这个项目无法运行。error is (intermediate value).then 不是一个函数。我不知道有什么问题...嗯..如何解决这个问题?请帮助我。

import React, { Component } from 'react';
// import throttle from 'lodash.throttle'
import debounce from 'lodash.debounce';


class Promise extends Component {
constructor() {
super();
// this.handleDebounce = this.handleDebounce.bind(this);
}
handleDebounce = (e) => {
// debounce(this.handleStart, 100); // 이런식으로 쓰면 안된다!! SyntheticEvent pooling (이벤트 풀링) 참고 https://reactjs.org/docs/events.html#event-pooling
// 콜백함수는 해당 이벤트가 실행되는 동안에만 유효함
this.setSearchTerm(e.target.value);
}

setSearchTerm = debounce((searchTerm) => this.handleStart(searchTerm), 2000);

handleStart = (value) => {
console.log("start", value)
this.handlePromise1(value)
.then(text => {
console.log(text)
})
.catch((err) => {console.log("err", err)})
}

handlePromise1 = (value) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
this.handlePromise2(resolve(value));
}, 300);
});
}

handlePromise2 = (value) => {
return new Promise((resolve, reject) => {
resolve(value);
});
}

render() {
return (
<div>
<input onKeyUp={this.handleDebounce}></input>
</div>
);
}
}



export default Promise;

最佳答案

解决方案:(编辑1)

问题不是因为异步,而是因为在浏览器上重写了 Promise。 new Promise() 实际上并没有创建预期的 Promise。检查here

不需要异步,正如我在此编辑之前提到的,如下所示:

过时的答案(不正确):仅供引用:我认为这个问题是在声明handlePromise1 期间缺少异步。因为它表示该函数是异步的,并且可能返回一个 Promise 作为返回值。如果未指定,它会将其视为任何对象,并且 .then 可能不可用。

我刚刚添加了异步,发现它可以在 this code 中工作

此外,@bravo 的评论是有效的。您不应该尝试在任何 JS 代码中重写 Promise

关于javascript - TypeError : (intermediate value). 那么不是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53367399/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com