gpt4 book ai didi

javascript - 解析来自 ES6 箭头函数的 promise

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:41:17 24 4
gpt4 key购买 nike

按照我在 ES6 中的理解阅读文档的含义:

foo => someFun(foo); 

相当于:

foo => { return someFun(foo); }

我正在返回一个新的 Promise 并在该代码中使用箭头函数来调用 resolve 和 reject 方法,例如

return new Promise(function(resolve, reject)
{
someFunThatReturnsAPromise()
.then(data => resolve(data))
.catch(err => reject(err));
});

这就是当时的代码,

.then(data => return resolve(data))

如果是这样,resolve 的结果(我不确定值的类型)是否重要,我是否应该稍微不那么简洁并使用 {} 编写它以防止隐式返回

.then(data => { resolve(data); })

最佳答案

resolve 函数已经返回了 undefined,所以如果你用单行箭头函数隐式返回它或者不从完全没有函数体(因为后者意味着您的函数体隐式返回 undefined 本身)。

此外,由于您已经将 someFunThatReturnsAPromise() 返回的 promise 包装在一个新的 promise 中,所以没有任何东西可以处理返回,所以即使确实返回了一些东西也没有任何区别。

更重要的是,您将 promise 包装在新 promise 中的方式是一种反模式。 new Promise() 构造仅用于处理尚未基于 promise 的异步进程。
因为 someFunThatReturnsAPromise() 已经返回了一个 promise,所以你不需要将它包装在一个新的中,只需使用你得到的那个!
对于您的示例,这仅仅意味着返回它:

return someFunThatReturnsAPromise()

如果你想对数据做一些处理,比如只返回一部分数据(下例中的 status 属性),你可以在 then回调:

return someFunThatReturnsAPromise().then(data => data.status)

当您在 then 回调中返回时,它会依次返回一个新的 promise ,该 promise 会根据您返回的数据得到解决(除非您返回另一个 promise ,在这种情况下它将在该 promise 时解决解决)。
这就是 promises 设计的工作方式,通过链接异步过程及其结果。

关于javascript - 解析来自 ES6 箭头函数的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46629698/

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