有人可以帮助澄清React setState方法中异步/等待的使用吗?我认为这仅适用于Promises。我找不到适合的文档。请有人帮忙!
我的应用程序中有类似的内容,并且它通常可以正常工作:
aync setNewName {
this.setState({ name: "boo" });
console.log(this.state); //prints most recent state - {name: 'boo'}
};
为什么起作用?之所以有效,是因为在这种情况下,状态在执行console语句之前迅速更新了?是否保证其他情况下的同步执行?
答案 0 :(得分:0)
此:
阐明React setState方法中对async / await的使用
在提供的代码中,async
只是将调用包装到setState()
。
此:
我认为这仅适用于Promises。
假设“它”的意思是async/await
,那么这是对的。您没有意识到的是setState()
函数被包装在Promise中,而不是表现。
此:
我的应用程序中有类似的内容,并且它通常可以正常工作:
该代码将始终起作用。为什么?因为它只是简单地同步执行。函数调用产生了一个Promised对象,因为它被声明为async
。
此:
它起作用了,因为在这种情况下,状态会在 执行控制台语句?
[EDIT] 不,这与状态更新时的无关。
是的,很可能是这样。这段代码不会“等待setState()
完成,但是在这种情况下,它将立即完成。
工作方式是:
setState()
return
statement 此:
是否可以保证在其他情况下同步执行?
否。
答案 1 :(得分:-1)
Java脚本将在bit位开始执行异步代码之前执行所有同步代码。第一个控制台日志已同步,因此已执行。然后执行setState。由于setState是异步的,因此您可以将其视为Promise,当实际设置状态时即可解决。设置状态后,将执行await回调。您可以将其视为诺言已解决。