
react promise 中加/不加函数大括号的影响原理
在 react 中,使用 promise 进行异步操作时,我们经常会遇到在函数前面加上或不加上大括号的情况。这两种写法产生不同的效果,让人迷惑。
问题:有无大括号的区别
下面展示了两种写法的对比:
正确写法(无大括号):
get: () => new promise((resolve) => {...})
错误写法(有大括号):
get: () => { new promise((resolve) => {...}) }
这两种写法的区别在于,无大括号的写法将 new promise 作为函数的返回值。而有大括号的写法,会将函数进一步包装一层,导致无法访问 promise 的 resolve 函数。
原理解释
当使用无大括号时,get 函数直接返回一个 promise 实例。而当添加大括号时,则创建一个匿名函数,此函数返回 promise 实例。在第二种写法中,匿名函数的返回值被 discard 掉,无法访问 resolve 函数。因此,get 函数实际上没有返回 promise,导致异步操作失败。
示例
以下是包含这两种写法的代码示例:
const getdata = async () => { // ...}useeffect(() => { currentref.current = { get: () => new promise((resolve) => { // 正确写法 getdata().then((res) => { // ... resolve({ ... }); }).catch((error) => { if (error && error.errorfields) { // ... } }); }) };}, []);
const getData = async () => { // ...}useEffect(() => { currentRef.current = { get: () => { // 错误写法,无法访问 resolve 函数 new Promise((resolve) => { getData().then((res) => { // ... resolve({ ... }); }).catch((error) => { if (error && error.errorFields) { // ... } }); }); } };}, []);
因此,在 react 中使用 promise 时,请确保省略函数大括号,以正确返回 promise 实例并实现异步操作。
以上就是React 中使用 Promise 时,函数大括号的影响原理是什么?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1498007.html
微信扫一扫
支付宝扫一扫