gpt4 book ai didi

javascript - promise 包装模式

转载 作者:行者123 更新时间:2023-12-03 07:31:47 24 4
gpt4 key购买 nike

我目前有以下 promise 包装功能:

var promiseWrap = (promiseInstance, resolveFunc, rejectFunc) => {
return new Promise((resolvePath, rejectPath) => {
promiseInstance
.then((...args) => {
resolvePath(resolveFunc.apply(null, args))
})
.catch((...args) => {
rejectPath(rejectFunc.apply(null, args))
})
});
}

虽然这有效,但我感觉这不是实现预期结果的最有效方式,甚至可能暴露出对 Promise 工作原理缺乏根本性的理解。所以这是相当通用的,但是您将如何重构这段代码?有没有更好的方法来达到相同的结果?

最佳答案

我不确定您是否刚刚实现了Promise constructor antipattern偶然,现在正试图概括它,或者真正认识到usefulness of functors/monads (恭喜!),但是您已经重新发明了 .then 方法

您的代码是more or less exactly相当于

function promiseWrap(promiseInstance, resolveFunc, rejectFunc) {
// assuming promiseInstance instanceof Promise - if not, add a `Promise.resolve()`
return promiseInstance.then(resolveFunc, rejectFunc);
}

事实上,then() 调用的返回值 - 回调结果的另一个 promise - 就是 promise 的全部内容。

关于javascript - promise 包装模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35787259/

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