请问各位大佬在如图的程序中,我使用await等待setState完成,setState是一个递归函数,但是最终都会进入到Character_State_Wait这个if语句中,我也用console.log打印出来确实执行到了这里,但是也仅仅到这里了,上面的调用setState后面的语句没有执行是什么问题
你管这个叫递归?
简单点讲,问下你执行的那个resolve是你第一次执行的那个resolve吗?
有promise时,建议递归分两个函数
一个示例
setState(a: any) {
return new Promise((resolve, reject) => {
this._setState(a, (err) => {
if (err) {
reject(err);
return;
}
resolve(true);
});
});
}
_setState(a: any, callback: Function) {
let state = doSomething(a);
if (state == '合理') {
callback();
} else if (state == '不合理') {
callback(err);
} else {
this._setState(a, callback);
}
}
1赞
定义异步函数:
syncFunc(): Promise {
return new Promise((resolve) => {
resolve(xxx);
}
};
调用异步函数:
(async () => {
……
let xxx = await this.syncFunc();
……
})();
1赞
谢谢,按你的写法写解决了。原来的代码应该是resolve没有传回来