treeData: this.state.treeData.concat([
this.genTreeNode(id, false),
this.genTreeNode(id, true),
resolve();
}, 300);
和我们习惯的写法不太一样,我是这样写的 注意我是有个return的 没有这个return就会报错
return new Promise(resolve => {
setTimeout(() => {
dispatch({
type: 'persionalUsermanage/queryOrgChild',
payload: {
oid: item.key
}).then((response:any) => {
let orgf:any = []
if (response.result) {
response.result.map((item:any) => {
orgf.push({
title: item.shortname,
key: item.oid,
dispatch({
type:'bSRoleManagement/querySysIdentityBySysId1',
payload: updateTreeData(roleRangeSelect,item.key,orgf),
resolve();
}, 300);
在使用antd TreeSelect组件 异步获取数据的时候报错dispatch(...).then is not a function这个错的原因其实是你请求的方法返回的不是promise对象 官网是这样写的 onLoadData = treeNode => new Promise(resolve => { const { id } = treeNode.props; setTimeout(() => { ...
react报错:
dispatch is not a
function,需要在类前添加@connect(() => ({}))
import {connect} from 'dva'
@connect(() => ({}))
class Methods extends Component{
Unhandled Rejection (TypeError): _this.props.
dispatch is not a
function
解决方法引入dva中connect方法
import { connect } from "dva";
@connect(() => ({}))
class Login extends Component {
export default Login;
dispatch(…).then is not a function
注意看model层的effect层和reducer是否写对?之前的项目错误原因:编辑和删除没有到effect文件中。
export default {
effect: {
{} //接口请求
reducer: {}
2.如:这就是一个promise对象, http.post或者http.get都是promise对象
3.这样请求的话就会出现上面的报错: Object(…)(…).then is not a function (错误的!!)
4.正确的请求:
重点:如果不知道如何看的话,直接console.log()一下这个方法就可以知道是否为promis
vuex dispatch().then() 得不到返回值;
原因: action 是异步的不能及时得到异步请求返回值。
解决办法: 在action里面使用Promise把操作结果抛出去
SET_OSS_PARAMS({commit}) {
return new Promise((resolve, reject) => {
req.get({
url: "...
记录一个实际项目中使用OSS上传到阿里云bug,也算是一个坑。
如上图new OSS进行文件上传,使用put上传,希望返回的是一个promise。但是返回的是一个generator,所以就会出现如下图的报错:client(...).put(...).then is not a function
查找issues看到:如果想要返回的是一个promise,需要new OSS.Wrapper,这样就可以解决上述报错的情况。
可是很奇怪,我的另外一个项目new OSS直接使用并没有出现这个报错。相同写法,那个是
package.
json 看一下 cesium版本是1.92.0
4月1日,开源项目Cesium已经发布最新版1.92,重要更新主要都是3DTiles相关的,这部分可能更容易受到关注。而另一项更新尽管用了更多篇幅来说明,但是还是很容易被忽视,那就是:删除Cesium.when,使用原生Promise。
官方介绍如下:
`this.store.dispatch` 是用来发起一个 action 的。如果你想在 dispatch 之后执行一些操作,可以使用 `async/await` 或者 `Promise.resolve()`。
async function example() {
await this.store.dispatch(someAction());
// do something after dispatch
// 或者
function example() {
return this.store.dispatch(someAction()).then(() => {
// do something after dispatch
function example() {
return Promise.resolve(this.store.dispatch(someAction())).then(() => {
// do something after dispatch
注意:如果 action 返回了一个 promise,那么 `dispatch()` 方法会返回这个 promise,上述例子中可以不用加上`Promise.resolve`